From 4a0bc5dda32d5897cfb113a523449dbd6264b8db Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 16 Feb 2016 15:42:22 +0100 Subject: [PATCH] refs #485, allow to close file loggger and using QStringBuilder --- src/blackmisc/filelogger.cpp | 27 ++++++++++++++++++--------- src/blackmisc/filelogger.h | 6 ++++-- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/blackmisc/filelogger.cpp b/src/blackmisc/filelogger.cpp index 2fc0b9518..7adbe3554 100644 --- a/src/blackmisc/filelogger.cpp +++ b/src/blackmisc/filelogger.cpp @@ -9,6 +9,7 @@ #include "filelogger.h" #include +#include #include #include #include @@ -16,8 +17,10 @@ namespace BlackMisc { - CFileLogger::CFileLogger(QObject *parent) : CFileLogger(QCoreApplication::applicationName(), QString(), parent) + CFileLogger::CFileLogger(QObject *parent) : + CFileLogger(QCoreApplication::applicationName(), QString(), parent) { + // void } CFileLogger::CFileLogger(const QString &applicationName, const QString &logPath, QObject *parent) : @@ -40,24 +43,30 @@ namespace BlackMisc } CFileLogger::~CFileLogger() + { + this->close(); + } + + void CFileLogger::close() { if (m_logFile.isOpen()) { - writeContentToFile(QStringLiteral("Application stopped.")); + disconnect(this); // disconnect from log handler + writeContentToFile(QStringLiteral("Logging stops.")); m_logFile.close(); } } void CFileLogger::ps_writeStatusMessageToFile(const BlackMisc::CStatusMessage &statusMessage) { + if (!m_logFile.isOpen()) { return; } if (! m_logPattern.match(statusMessage)) { return; } - - QString finalContent = QDateTime::currentDateTime().toString(QStringLiteral("hh:mm:ss ")); - finalContent += statusMessage.getHumanReadablePattern(); - finalContent += " "; - finalContent += statusMessage.getSeverityAsString(); - finalContent += ": "; - finalContent += statusMessage.getMessage(); + const QString finalContent(QDateTime::currentDateTime().toString(QStringLiteral("hh:mm:ss ")) + % statusMessage.getHumanReadablePattern() + % " " + % statusMessage.getSeverityAsString() + % ": " + % statusMessage.getMessage()); writeContentToFile(finalContent); } diff --git a/src/blackmisc/filelogger.h b/src/blackmisc/filelogger.h index 64dddc308..6ff041297 100644 --- a/src/blackmisc/filelogger.h +++ b/src/blackmisc/filelogger.h @@ -27,7 +27,6 @@ namespace BlackMisc Q_OBJECT public: - //! Constructor. //! Filename defaults to QCoreApplication::applicationName() and path to "." CFileLogger(QObject *parent = nullptr); @@ -48,8 +47,11 @@ namespace BlackMisc //! Change the log pattern. Default is to log all messages. void changeLogPattern(const CLogPattern &pattern) { m_logPattern = pattern; } - private slots: + //! Close file + void close(); + private slots: + //! Write single status message to file void ps_writeStatusMessageToFile(const BlackMisc::CStatusMessage &statusMessage); private: