Experimental persistent log.
This commit is contained in:
parent
a0d5135820
commit
98c5ae234d
4 changed files with 62 additions and 10 deletions
|
@ -1 +1 @@
|
|||
Subproject commit 4a01edaec7d67d3b2ae81aeea2a3c876216fbab8
|
||||
Subproject commit ae7084718c41afc01919779e58cd449e0eebd401
|
|
@ -62,6 +62,11 @@ int main(int argc, char* argv[]) {
|
|||
// Instantiate base application object.
|
||||
Application application(APP_LOW_NAME, argc, argv);
|
||||
|
||||
if (application.arguments().contains(QL1S("-log"))) {
|
||||
Debugging::instance()->setTargetFile(IOFactory::getSystemFolder(QStandardPaths::TempLocation) +
|
||||
QDir::separator() + QL1S("rssguard.log"));
|
||||
}
|
||||
|
||||
qDebug("Instantiated Application class.");
|
||||
|
||||
// Check if another instance is running.
|
||||
|
|
|
@ -11,7 +11,28 @@
|
|||
#include <cstdlib>
|
||||
#include <ctime>
|
||||
|
||||
Debugging::Debugging() {}
|
||||
Q_GLOBAL_STATIC(Debugging, qz_debug_acmanager)
|
||||
|
||||
Debugging * Debugging::instance() {
|
||||
return qz_debug_acmanager();
|
||||
}
|
||||
|
||||
void Debugging::setTargetFile(const QString& targetFile) {
|
||||
m_targetFile = targetFile;
|
||||
|
||||
if (!m_targetFile.isEmpty()) {
|
||||
m_targetFileHandle = new QFile(m_targetFile);
|
||||
m_targetFileHandle->open(QIODevice::WriteOnly | QIODevice::Append);
|
||||
}
|
||||
}
|
||||
|
||||
QString Debugging::targetFile() const {
|
||||
return m_targetFile;
|
||||
}
|
||||
|
||||
QFile* Debugging::targetFileHandle() {
|
||||
return m_targetFileHandle;
|
||||
}
|
||||
|
||||
void Debugging::performLog(const char* message, QtMsgType type, const char* file, const char* function, int line) {
|
||||
const char* type_string = typeToString(type);
|
||||
|
@ -21,13 +42,26 @@ void Debugging::performLog(const char* message, QtMsgType type, const char* file
|
|||
|
||||
std::strftime(mbstr, sizeof(mbstr), "%y/%d/%m %H:%M:%S", std::localtime(&t));
|
||||
|
||||
// Write to console.
|
||||
if (file == 0 || function == 0 || line < 0) {
|
||||
fprintf(stderr, "[%s] %s: %s (%s)\n", APP_LOW_NAME, type_string, message, mbstr);
|
||||
if (instance()->targetFile().isEmpty()) {
|
||||
|
||||
// Write to console.
|
||||
if (file == 0 || function == 0 || line < 0) {
|
||||
fprintf(stderr, "[%s] %s: %s (%s)\n", APP_LOW_NAME, type_string, message, mbstr);
|
||||
}
|
||||
else {
|
||||
fprintf(stderr, "[%s] %s (%s)\n Type: %s\n File: %s (line %d)\n Function: %s\n\n",
|
||||
APP_LOW_NAME, message, mbstr, type_string, file, line, function);
|
||||
}
|
||||
}
|
||||
else {
|
||||
fprintf(stderr, "[%s] %s (%s)\n Type: %s\n File: %s (line %d)\n Function: %s\n\n",
|
||||
APP_LOW_NAME, message, mbstr, type_string, file, line, function);
|
||||
if (file == 0 || function == 0 || line < 0) {
|
||||
instance()->targetFileHandle()->write(QString("[%1] %2: %3 (%4)\n").arg(APP_LOW_NAME, type_string, message, mbstr).toUtf8());
|
||||
}
|
||||
else {
|
||||
instance()->targetFileHandle()->write(QString("[%1] %2 (%3)\n Type: %4\n File: %5 (line %6)\n Function: %7\n\n")
|
||||
.arg(APP_LOW_NAME, message, mbstr, type_string,
|
||||
file, QString::number(line), function).toUtf8());
|
||||
}
|
||||
}
|
||||
|
||||
if (type == QtFatalMsg) {
|
||||
|
@ -52,6 +86,8 @@ const char* Debugging::typeToString(QtMsgType type) {
|
|||
}
|
||||
}
|
||||
|
||||
Debugging::Debugging() {}
|
||||
|
||||
void Debugging::debugHandler(QtMsgType type, const QMessageLogContext& placement, const QString& message) {
|
||||
#ifndef QT_NO_DEBUG_OUTPUT
|
||||
performLog(qPrintable(message), type, placement.file, placement.function, placement.line);
|
||||
|
|
|
@ -5,8 +5,12 @@
|
|||
|
||||
#include <QtGlobal>
|
||||
|
||||
#include <QFile>
|
||||
#include <QString>
|
||||
|
||||
class Debugging {
|
||||
public:
|
||||
explicit Debugging();
|
||||
|
||||
// Specifies format of output console messages.
|
||||
// NOTE: QT_NO_DEBUG_OUTPUT - disables debug outputs completely!!!
|
||||
|
@ -14,10 +18,17 @@ class Debugging {
|
|||
static void performLog(const char* message, QtMsgType type, const char* file = 0, const char* function = 0, int line = -1);
|
||||
static const char* typeToString(QtMsgType type);
|
||||
|
||||
private:
|
||||
// Returns pointer to global silent network manager
|
||||
static Debugging* instance();
|
||||
|
||||
// Constructor.
|
||||
explicit Debugging();
|
||||
void setTargetFile(const QString& targetFile);
|
||||
QString targetFile() const;
|
||||
|
||||
QFile* targetFileHandle();
|
||||
|
||||
private:
|
||||
QString m_targetFile;
|
||||
QFile* m_targetFileHandle;
|
||||
};
|
||||
|
||||
#endif // DEBUGGING_H
|
||||
|
|
Loading…
Add table
Reference in a new issue