refs #335, log messages directly from status messages

This commit is contained in:
Klaus Basan
2014-11-05 16:52:22 +01:00
committed by Roland Winklmeier
parent 1ea330cc06
commit ffc9cc1b77
2 changed files with 38 additions and 3 deletions

View File

@@ -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<QTextStream**>(&debug); // should be safe because it is relying on Qt's guarantee of ABI compatibility
auto &stream = **reinterpret_cast<QTextStream **>(&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());
}
}

View File

@@ -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.