From d0c0d8dc77f99136bde89712cd9257be87a36d68 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Mon, 12 Jun 2023 12:57:17 +0200 Subject: [PATCH] rotate logs based on the lines count instead of teh file size will omit querying teh file size repeatedly (and not cost free) Signed-off-by: Matthieu Gallien --- src/libsync/logger.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/libsync/logger.cpp b/src/libsync/logger.cpp index cab592adf..fffbbc14c 100644 --- a/src/libsync/logger.cpp +++ b/src/libsync/logger.cpp @@ -36,7 +36,7 @@ namespace { constexpr int CrashLogSize = 20; -constexpr int MaxLogSizeBytes = 1024 * 1024 * 30; +constexpr auto MaxLogLinesCount = 50000; static bool compressLog(const QString &originalName, const QString &targetName) { @@ -118,7 +118,8 @@ bool Logger::isLoggingToFile() const void Logger::doLog(QtMsgType type, const QMessageLogContext &ctx, const QString &message) { - const QString msg = qFormatLogMessage(type, ctx, message); + static long long int linesCounter = 0; + const auto &msg = qFormatLogMessage(type, ctx, message); #if defined(Q_OS_WIN) && defined(QT_DEBUG) // write logs to Output window of Visual Studio { @@ -146,10 +147,12 @@ void Logger::doLog(QtMsgType type, const QMessageLogContext &ctx, const QString { QMutexLocker lock(&_mutex); - if (_logFile.size() >= MaxLogSizeBytes) { + if (linesCounter >= MaxLogLinesCount) { + linesCounter = 0; closeNoLock(); enterNextLogFileNoLock(); } + ++linesCounter; _crashLogIndex = (_crashLogIndex + 1) % CrashLogSize; _crashLog[_crashLogIndex] = msg; -- 2.30.2