flush logs every 5 lines written

should help not loosing too much logs in case of a crash or similar not
nominal stop of the client

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
This commit is contained in:
Matthieu Gallien 2024-11-13 11:54:36 +01:00
Родитель 8268c0fb87
Коммит b327830325
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 7D0F74F05C22F553
2 изменённых файлов: 8 добавлений и 1 удалений

Просмотреть файл

@ -37,6 +37,7 @@ namespace {
constexpr int CrashLogSize = 20;
constexpr auto MaxLogLinesCount = 50000;
constexpr auto MaxLogLinesBeforeFlush = 10;
static bool compressLog(const QString &originalName, const QString &targetName)
{
@ -145,8 +146,13 @@ void Logger::doLog(QtMsgType type, const QMessageLogContext &ctx, const QString
if (_logstream) {
(*_logstream) << msg << "\n";
if (_doFileFlush)
++_linesCounter;
if (_doFileFlush ||
_linesCounter >= MaxLogLinesBeforeFlush ||
type == QtMsgType::QtWarningMsg || type == QtMsgType::QtCriticalMsg || type == QtMsgType::QtFatalMsg) {
_logstream->flush();
_linesCounter = 0;
}
}
if (_permanentDeleteLogStream && ctx.category && strcmp(ctx.category, lcPermanentLog().categoryName()) == 0) {
(*_permanentDeleteLogStream) << msg << "\n";

Просмотреть файл

@ -110,6 +110,7 @@ private:
QFile _logFile;
bool _doFileFlush = false;
int _linesCounter = 0;
int _logExpire = 0;
bool _logDebug = false;
QScopedPointer<QTextStream> _logstream;