From d179c6d5a13d29fe8088f0ca9a85b90c56f172ca Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Thu, 26 Mar 2020 15:49:14 +0800 Subject: [PATCH 1/3] Rename variable --- src/app/filelogger.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/app/filelogger.cpp b/src/app/filelogger.cpp index 54b8ed8e6..e296b95c2 100644 --- a/src/app/filelogger.cpp +++ b/src/app/filelogger.cpp @@ -114,23 +114,23 @@ void FileLogger::addLogMessage(const Log::Msg &msg) { if (!m_logFile.isOpen()) return; - QTextStream str(&m_logFile); + QTextStream stream(&m_logFile); switch (msg.type) { case Log::INFO: - str << "(I) "; + stream << "(I) "; break; case Log::WARNING: - str << "(W) "; + stream << "(W) "; break; case Log::CRITICAL: - str << "(C) "; + stream << "(C) "; break; default: - str << "(N) "; + stream << "(N) "; } - str << QDateTime::fromMSecsSinceEpoch(msg.timestamp).toString(Qt::ISODate) << " - " << msg.message << endl; + stream << QDateTime::fromMSecsSinceEpoch(msg.timestamp).toString(Qt::ISODate) << " - " << msg.message << endl; if (m_backup && (m_logFile.size() >= m_maxSize)) { closeLogFile(); From 12396a7582938ce0e5b93b70e80e04fcfff06858 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Thu, 26 Mar 2020 15:50:07 +0800 Subject: [PATCH 2/3] Save log file in UTF-8 encoding Otherwise it uses sytem defaults: usually UTF-8 on Linux and local 8-bit encoding on Windows. --- src/app/filelogger.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/app/filelogger.cpp b/src/app/filelogger.cpp index e296b95c2..4220e59ed 100644 --- a/src/app/filelogger.cpp +++ b/src/app/filelogger.cpp @@ -115,6 +115,7 @@ void FileLogger::addLogMessage(const Log::Msg &msg) if (!m_logFile.isOpen()) return; QTextStream stream(&m_logFile); + stream.setCodec("UTF-8"); switch (msg.type) { case Log::INFO: From c52737e07c7151daeb0f0b703c3721df0a872b77 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Thu, 26 Mar 2020 15:57:56 +0800 Subject: [PATCH 3/3] Avoid log file excessive flushing Excessive flushing could happen when a lot of logging happens in a short time interval. --- src/app/filelogger.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/app/filelogger.cpp b/src/app/filelogger.cpp index 4220e59ed..31577255d 100644 --- a/src/app/filelogger.cpp +++ b/src/app/filelogger.cpp @@ -28,6 +28,8 @@ #include "filelogger.h" +#include + #include #include #include @@ -36,11 +38,16 @@ #include "base/logger.h" #include "base/utils/fs.h" +namespace +{ + const std::chrono::seconds FLUSH_INTERVAL {2}; +} + FileLogger::FileLogger(const QString &path, const bool backup, const int maxSize, const bool deleteOld, const int age, const FileLogAgeType ageType) : m_backup(backup) , m_maxSize(maxSize) { - m_flusher.setInterval(0); + m_flusher.setInterval(FLUSH_INTERVAL); m_flusher.setSingleShot(true); connect(&m_flusher, &QTimer::timeout, this, &FileLogger::flushLog); @@ -131,7 +138,7 @@ void FileLogger::addLogMessage(const Log::Msg &msg) stream << "(N) "; } - stream << QDateTime::fromMSecsSinceEpoch(msg.timestamp).toString(Qt::ISODate) << " - " << msg.message << endl; + stream << QDateTime::fromMSecsSinceEpoch(msg.timestamp).toString(Qt::ISODate) << " - " << msg.message << '\n'; if (m_backup && (m_logFile.size() >= m_maxSize)) { closeLogFile(); @@ -147,7 +154,8 @@ void FileLogger::addLogMessage(const Log::Msg &msg) openLogFile(); } else { - m_flusher.start(); + if (!m_flusher.isActive()) + m_flusher.start(); } }