From ffc9cc1b77ec9f5571f71e601affc31a7c7c959c Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 5 Nov 2014 16:52:22 +0100 Subject: [PATCH] refs #335, log messages directly from status messages --- src/blackmisc/logmessage.cpp | 33 ++++++++++++++++++++++++++++++--- src/blackmisc/logmessage.h | 8 ++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/blackmisc/logmessage.cpp b/src/blackmisc/logmessage.cpp index dbd1386ef..1091da06d 100644 --- a/src/blackmisc/logmessage.cpp +++ b/src/blackmisc/logmessage.cpp @@ -61,6 +61,30 @@ namespace BlackMisc return error(format); } + CLogMessage &CLogMessage::validation(const CStatusMessage &statusMessage) + { + switch (statusMessage.getSeverity()) + { + case CStatusMessage::SeverityDebug: + case CStatusMessage::SeverityInfo: + return validationInfo(statusMessage.getMessage()); + case CStatusMessage::SeverityWarning: + return validation(statusMessage.getMessage()); + case CStatusMessage::SeverityError: + return error(statusMessage.getMessage()); + default: + return validationInfo(statusMessage.getMessage()); + } + } + + void CLogMessage::validations(const CStatusMessageList &statusMessages) + { + foreach(CStatusMessage msg, statusMessages) + { + validation(msg); + } + } + CLogMessage::operator CStatusMessage() { m_redundant = true; @@ -80,7 +104,7 @@ namespace BlackMisc // should be safe, but still it's horrible, we could directly call qt_message_output instead QByteArray category = qtCategory(); QDebug debug = ostream(category); - auto &stream = **reinterpret_cast(&debug); // should be safe because it is relying on Qt's guarantee of ABI compatibility + auto &stream = **reinterpret_cast(&debug); // should be safe because it is relying on Qt's guarantee of ABI compatibility stream << message(); } @@ -164,7 +188,10 @@ namespace BlackMisc QString CLogMessageHelper::addDebugFlag(const QString &category) { return addFlag(category, "debug"); } QString CLogMessageHelper::stripFlags(const QString &category) { return category.section("/", 0, 1); } bool CLogMessageHelper::hasRedundantFlag(const QString &category) { return hasFlag(category, "redundant"); } - bool CLogMessageHelper::hasDebugFlag(const QString &category) { return hasFlag(category, "debug") || category.isEmpty() - || (QLoggingCategory::defaultCategory() && category == QLoggingCategory::defaultCategory()->categoryName()); } + bool CLogMessageHelper::hasDebugFlag(const QString &category) + { + return hasFlag(category, "debug") || category.isEmpty() + || (QLoggingCategory::defaultCategory() && category == QLoggingCategory::defaultCategory()->categoryName()); + } } diff --git a/src/blackmisc/logmessage.h b/src/blackmisc/logmessage.h index 1d8f3e0d0..8ddce73f9 100644 --- a/src/blackmisc/logmessage.h +++ b/src/blackmisc/logmessage.h @@ -12,6 +12,7 @@ //! \file +#include "statusmessagelist.h" #include "statusmessage.h" #include "logcategorylist.h" #include "index_sequence.h" @@ -119,6 +120,13 @@ namespace BlackMisc //! Set the severity to error, providing a format string, and adding the validation category. CLogMessage &validationError(QString format); + //! Set the severity as in \sa CStatusMessage::StatusSeverity , and adding the validation category. + CLogMessage &validation(const CStatusMessage &statusMessage); + + //! Set the severity as in \sa CStatusMessage::StatusSeverity , and adding the validation category. + //! \todo how to handle return value here, CLogMessageList? + void validations(const CStatusMessageList &statusMessages); + //! Streaming operators. //! \details If the format string is empty, the message will consist of all streamed values separated by spaces. //! Otherwise, the streamed values will replace the place markers %1, %2, %3... in the format string.