# # # patch "src/Guitone.h" # from [881dffddd5bdd9999f2ed36ecdcaa019de153cb4] # to [7e8655d1197edc661b8d7b5f90b64b957cb04972] # # patch "src/util/DebugLog.cpp" # from [ebbb4ff026ff490147e9c81f53f3c1b23c82febf] # to [513339e2eb09994edeed4ad8ed3d98b9a6101c81] # # patch "src/util/DebugLog.h" # from [15ae25ff50330f9a76933a81f344875cd72554d8] # to [94f2cac41d2381a8ab113dc5adb29131844beaf4] # # patch "src/view/dialogs/Preferences.cpp" # from [00aed581d2c8b7991731472f2e9e54cdbcb4771f] # to [fa8fbb4a34c9e008c0636f4610c6b5900c6ba984] # # patch "src/vocab.h" # from [ed37b5f6deab84d3025ff1bfb2b0341993391751] # to [93fa57e57a96913ac73783a9abb2987bff6151e7] # ============================================================ --- src/Guitone.h 881dffddd5bdd9999f2ed36ecdcaa019de153cb4 +++ src/Guitone.h 7e8655d1197edc661b8d7b5f90b64b957cb04972 @@ -24,6 +24,7 @@ #include "MainWindow.h" #include "Monotone.h" #include "ApplicationUpdate.h" +#include "DebugLog.h" #include #include ============================================================ --- src/util/DebugLog.cpp ebbb4ff026ff490147e9c81f53f3c1b23c82febf +++ src/util/DebugLog.cpp 513339e2eb09994edeed4ad8ed3d98b9a6101c81 @@ -56,12 +56,12 @@ DebugLog::DebugLog() QString sep; QDate today = QDate::currentDate(); sep.fill('=', 40); - log(Debug, sep); - log(Debug, + log(Info, sep); + log(Info, QString(" guitone session started (%1)") .arg(today.toString("yyyy-MM-dd")) ); - log(Debug, sep); + log(Info, sep); } DebugLog::~DebugLog() @@ -89,13 +89,15 @@ void DebugLog::log(Type t, QString msg) if (logLevel == Fatal && t > Fatal) return; if (logLevel == Critical && t > Critical) return; if (logLevel == Warn && t > Warn) return; + if (logLevel == Info && t > Info) return; if (logLevel == Debug && t > Debug) return; QMap errors; errors[0] = "fatal"; errors[1] = "critical"; errors[2] = "warning"; - errors[3] = "debug"; + errors[3] = "info"; + errors[4] = "debug"; // do not use I here since this calls qFatal and results in // an endless loop @@ -131,11 +133,20 @@ void DebugLog::closeLogfile() if (logFile.isOpen()) logFile.close(); } +#ifndef QT_NO_DEBUG void DebugLog::debug(QString msg) { singleton()->log(Debug, msg); } +#else +void DebugLog::debug(QString msg) { Q_UNUSED(msg); } +#endif +void DebugLog::info(QString msg) +{ + singleton()->log(Info, msg); +} + void DebugLog::warn(QString msg) { singleton()->log(Warn, msg); ============================================================ --- src/util/DebugLog.h 15ae25ff50330f9a76933a81f344875cd72554d8 +++ src/util/DebugLog.h 94f2cac41d2381a8ab113dc5adb29131844beaf4 @@ -30,7 +30,7 @@ public: // higher levels include lower ones, i.e. // 'warn' also prints out 'critical' and 'fatal'; // 'debug' prints out everything we have - enum Level {Fatal = 1, Critical, Warn, Debug }; + enum Level {Fatal = 1, Critical, Warn, Info, Debug }; // as we have different Levels each level's name is also // the name for a specific log type typedef Level Type; @@ -45,6 +45,7 @@ public: static QString logFilePath(); + static void info(QString); static void debug(QString); inline static void debug(const char * msg) { return debug(QString::fromUtf8(msg)); } static void warn(QString); ============================================================ --- src/view/dialogs/Preferences.cpp 00aed581d2c8b7991731472f2e9e54cdbcb4771f +++ src/view/dialogs/Preferences.cpp fa8fbb4a34c9e008c0636f4610c6b5900c6ba984 @@ -41,12 +41,18 @@ Preferences::Preferences(QWidget* parent enableFileLog->setText(enableFileLog->text().arg(DebugLog::logFilePath())); - logLevel->addItem(tr("Low (fatal errors)"), 1); - logLevel->addItem(tr("Medium (critical errors)"), 2); - logLevel->addItem(tr("High (warnings)"), 3); - logLevel->addItem(tr("All (debug messages)"), 4); + logLevel->addItem(tr("Very low (only fatal)"), 1); + logLevel->addItem(tr("Low (critical)"), 2); + logLevel->addItem(tr("Medium (warnings)"), 3); + logLevel->addItem(tr("High (info messages)"), 4); - logLevel->setCurrentIndex(DebugLog::getLogLevel()-1); + int lvl = DebugLog::getLogLevel(); +#ifndef QT_NO_DEBUG + logLevel->addItem(tr("Very high (debug messages)"), 5); + lvl = lvl > 4 ? 4 : lvl; +#endif + + logLevel->setCurrentIndex(lvl - 1); checkForUpdates->setCheckState( Settings::getBool("CheckForUpdates", true) ? ============================================================ --- src/vocab.h ed37b5f6deab84d3025ff1bfb2b0341993391751 +++ src/vocab.h 93fa57e57a96913ac73783a9abb2987bff6151e7 @@ -17,17 +17,25 @@ class Guitone; #endif */ +#include "DebugLog.h" #ifdef QT_NO_DEBUG -#define D(arg) void() +#define D(msg) void(msg) #else -#define D(arg) qDebug("%s:%s:%d: %s", __FILE__, __FUNCTION__, __LINE__, qPrintable(QString(arg))) +#define D(msg) DebugLog::debug(QString("%1:%2:%3: %4") \ + .arg(__FILE__).arg(__FUNCTION__).arg(__LINE__).arg(QString(msg))) #endif -#define W(arg) qWarning("%s:%s:%d: %s", __FILE__, __FUNCTION__, __LINE__, qPrintable(QString(arg))) -#define C(arg) qCritical("%s:%s:%d: %s", __FILE__, __FUNCTION__, __LINE__, qPrintable(QString(arg))) -#define F(arg) qFatal("%s:%s:%d: %s", __FILE__, __FUNCTION__, __LINE__, qPrintable(QString(arg))) -#define I(arg) if (!(arg)) qFatal("%s:%s:%d: invariant \"%s\" violated", __FILE__, __FUNCTION__, __LINE__, #arg) +#define L(msg) DebugLog::info(QString("%1:%2:%3: %4") \ + .arg(__FILE__).arg(__FUNCTION__).arg(__LINE__).arg(QString(msg))) +#define W(msg) DebugLog::warn(QString("%1:%2:%3: %4") \ + .arg(__FILE__).arg(__FUNCTION__).arg(__LINE__).arg(QString(msg))) +#define C(msg) DebugLog::critical(QString("%1:%2:%3: %4") \ + .arg(__FILE__).arg(__FUNCTION__).arg(__LINE__).arg(QString(msg))) +#define F(msg) DebugLog::fatal(QString("%1:%2:%3: %4") \ + .arg(__FILE__).arg(__FUNCTION__).arg(__LINE__).arg(QString(msg))) +#define I(expr) if (!(expr)) F(QString("invariant \"%1\" violated").arg(#expr)) + // // type definitions //