# # # patch "src/util/DebugLog.cpp" # from [31dd9aa80e52343473b085abc20cdc9245f9bb03] # to [9215c1c330de41267441b319df00e63855f5da42] # # patch "src/util/DebugLog.h" # from [18c30e48c09f79bda5a7b5718ea4c486eb5622da] # to [468ea3e9a4dd5a5406caa98dd666a3d8d5a67320] # ============================================================ --- src/util/DebugLog.cpp 31dd9aa80e52343473b085abc20cdc9245f9bb03 +++ src/util/DebugLog.cpp 9215c1c330de41267441b319df00e63855f5da42 @@ -40,15 +40,12 @@ DebugLog::DebugLog() DebugLog::DebugLog() { consoleLogging = Settings::getBool("ConsoleLogEnabled", true); - fileLogging = Settings::getBool("FileLogEnabled", false); int level = Settings::getLogLevel(); if (level >= Fatal && level <= Debug) logLevel = static_cast(level); - if (fileLogging && !openLogfile()) + if (Settings::getBool("FileLogEnabled", false)) { - critical(QString("Cannot open logfile '%1' for writing, " - "disable file logging.").arg(logFilePath())); - fileLogging = false; + openLogfile(); } QString sep; @@ -71,7 +68,7 @@ DebugLog::~DebugLog() if (logFile.isOpen()) closeLogfile(); } -bool DebugLog::openLogfile() +void DebugLog::openLogfile() { logFile.setFileName(logFilePath()); @@ -79,9 +76,17 @@ bool DebugLog::openLogfile() QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text | QIODevice::Unbuffered; - if (!logFile.open(flags)) return false; + if (!logFile.open(flags)) + { + fileLogging = false; + log(Critical, QString( + "cannot open logfile '%1' for writing, disable file logging " + "(error was: %2)" + ).arg(logFilePath()).arg(logFile.errorString())); + return; + } - return true; + fileLogging = true; } void DebugLog::log(Type t, QString msg) @@ -124,15 +129,19 @@ void DebugLog::log(Type t, QString msg) } // print the message to the logfile - if (fileLogging && logFile.isOpen()) + if (fileLogging && !logFile.write(utf8_msg)) { - logFile.write(utf8_msg); + fileLogging = false; + log(Critical, QString( + "could not log to file, disable file log (error: %1)" + ).arg(logFile.errorString())); } } void DebugLog::closeLogfile() { if (logFile.isOpen()) logFile.close(); + fileLogging = false; } #ifndef QT_NO_DEBUG @@ -179,14 +188,8 @@ void DebugLog::setFileLogEnabled(bool en } else if (!log->fileLogging && enabled) { - if (!log->openLogfile()) - { - log->critical(QString("Cannot open logfile '%1' for writing, " - "disable file logging.").arg(logFilePath())); - enabled = false; - } + log->openLogfile(); } - log->fileLogging = enabled; } void DebugLog::setLogLevel(int level) ============================================================ --- src/util/DebugLog.h 18c30e48c09f79bda5a7b5718ea4c486eb5622da +++ src/util/DebugLog.h 468ea3e9a4dd5a5406caa98dd666a3d8d5a67320 @@ -53,7 +53,7 @@ private: DebugLog(); ~DebugLog(); - bool openLogfile(); + void openLogfile(); void closeLogfile(); void log(Type, QString);