From 69905d310f4ffc4eeae8bf5e373323602974d61e Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Mon, 8 Dec 2014 00:23:51 +0000 Subject: [PATCH] refs #350 Fixed CLogMessage methods for logging preformatted statusmessages. --- .../components/flightplancomponent.cpp | 4 +- src/blackgui/components/logincomponent.cpp | 3 +- src/blackgui/components/settingscomponent.cpp | 4 +- src/blackmisc/logmessage.cpp | 57 +++++-------------- src/blackmisc/logmessage.h | 16 ++---- 5 files changed, 29 insertions(+), 55 deletions(-) diff --git a/src/blackgui/components/flightplancomponent.cpp b/src/blackgui/components/flightplancomponent.cpp index 0a732daee..b840eb7d0 100644 --- a/src/blackgui/components/flightplancomponent.cpp +++ b/src/blackgui/components/flightplancomponent.cpp @@ -296,7 +296,9 @@ namespace BlackGui { CFlightPlan flightPlan; CStatusMessageList messages = this->validateAndInitializeFlightPlan(flightPlan); - CLogMessage(this).validations(messages); + messages.addCategories(this); + messages.addCategory(CLogCategory::validation()); + CLogMessage::preformatted(messages); } void CFlightPlanComponent::ps_resetFlightPlan() diff --git a/src/blackgui/components/logincomponent.cpp b/src/blackgui/components/logincomponent.cpp index 570e08c59..838afb780 100644 --- a/src/blackgui/components/logincomponent.cpp +++ b/src/blackgui/components/logincomponent.cpp @@ -213,7 +213,8 @@ namespace BlackGui } // log message and trigger events - CLogMessage(this).statusMessage(msg); + msg.addCategories(this); + CLogMessage::preformatted(msg); if (msg.isSeverityInfoOrLess()) { emit loginOrLogoffSuccessful(); diff --git a/src/blackgui/components/settingscomponent.cpp b/src/blackgui/components/settingscomponent.cpp index f427dbb27..f9c96e2ee 100644 --- a/src/blackgui/components/settingscomponent.cpp +++ b/src/blackgui/components/settingscomponent.cpp @@ -154,7 +154,9 @@ namespace BlackGui CStatusMessageList msgs = server.validate(); if (!msgs.isEmpty()) { - CLogMessage(this).validations(msgs); + msgs.addCategories(this); + msgs.addCategory(CLogCategory::validation()); + CLogMessage::preformatted(msgs); return; } diff --git a/src/blackmisc/logmessage.cpp b/src/blackmisc/logmessage.cpp index 6cba5b3ef..4374f79ac 100644 --- a/src/blackmisc/logmessage.cpp +++ b/src/blackmisc/logmessage.cpp @@ -40,24 +40,6 @@ namespace BlackMisc return *this; } - CLogMessage &CLogMessage::statusMessage(const CStatusMessage &statusMessage) - { - switch (statusMessage.getSeverity()) - { - case CStatusMessage::SeverityDebug: - this->m_message = statusMessage.getMessage(); - return debug(); - case CStatusMessage::SeverityInfo: - return info(statusMessage.getMessage()); - case CStatusMessage::SeverityWarning: - return warning(statusMessage.getMessage()); - case CStatusMessage::SeverityError: - return error(statusMessage.getMessage()); - default: - return info(statusMessage.getMessage()); - } - } - CLogMessage &CLogMessage::validationInfo(QString format) { m_categories.remove(CLogCategory::uncategorized()); @@ -79,30 +61,6 @@ 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 validationWarning(statusMessage.getMessage()); - case CStatusMessage::SeverityError: - return validationError(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; @@ -213,4 +171,19 @@ namespace BlackMisc || (QLoggingCategory::defaultCategory() && category == QLoggingCategory::defaultCategory()->categoryName()); } + void CLogMessage::preformatted(const CStatusMessage &statusMessage) + { + CLogMessage msg(statusMessage.getCategories()); + msg.m_severity = statusMessage.getSeverity(); + msg.m_message = statusMessage.getMessage(); + } + + void CLogMessage::preformatted(const CStatusMessageList &statusMessages) + { + for(const auto &msg : statusMessages) + { + preformatted(msg); + } + } + } diff --git a/src/blackmisc/logmessage.h b/src/blackmisc/logmessage.h index 92fa5d918..0afc8341e 100644 --- a/src/blackmisc/logmessage.h +++ b/src/blackmisc/logmessage.h @@ -111,9 +111,6 @@ namespace BlackMisc //! Set the severity to error, providing a format string. CLogMessage &error(QString format); - //! Log message by status message - CLogMessage &statusMessage(const CStatusMessage &statusMessage); - //! Set the severity to info, providing a format string, and adding the validation category. CLogMessage &validationInfo(QString format); @@ -123,13 +120,6 @@ 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. @@ -150,6 +140,12 @@ namespace BlackMisc CLogMessage &operator <<(const CValueObject &v) { return arg(v.toQString()); } //! @} + //! Sends a verbatim, preformatted message to the log. + static void preformatted(const CStatusMessage &statusMessage); + + //! Sends a list of verbatim, preformatted messages to the log. + static void preformatted(const CStatusMessageList &statusMessages); + private: QMessageLogger m_logger; CStatusMessage::StatusSeverity m_severity = CStatusMessage::SeverityDebug;