LogDir: Compress last logfile on restart
authorChristian Kamm <mail@ckamm.de>
Tue, 30 Jul 2019 12:04:34 +0000 (14:04 +0200)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Wed, 1 Jul 2020 13:13:20 +0000 (15:13 +0200)
For #7353

src/libsync/logger.cpp

index 35a997e2719a75ed2cbf0b8c3668f45cd7a74182..4bb17ac71af19cb36f6f9589b7339419595cf778 100644 (file)
@@ -269,7 +269,7 @@ void Logger::enterNextLogFile()
 
         // Expire old log files and deal with conflicts
         QStringList files = dir.entryList(QStringList("*owncloud.log.*"),
-            QDir::Files);
+            QDir::Files, QDir::Name);
         QRegExp rx(R"(.*owncloud\.log\.(\d+).*)");
         int maxNumber = -1;
         foreach (const QString &s, files) {
@@ -288,10 +288,15 @@ void Logger::enterNextLogFile()
         auto previousLog = _logFile.fileName();
         setLogFile(dir.filePath(newLogName));
 
-        if (!previousLog.isEmpty()) {
-            QString compressedName = previousLog + ".gz";
-            if (compressLog(previousLog, compressedName)) {
-                QFile::remove(previousLog);
+        // Compress the previous log file. On a restart this can be the most recent
+        // log file.
+        auto logToCompress = previousLog;
+        if (logToCompress.isEmpty() && files.size() > 0 && !files.last().endsWith(".gz"))
+            logToCompress = dir.absoluteFilePath(files.last());
+        if (!logToCompress.isEmpty()) {
+            QString compressedName = logToCompress + ".gz";
+            if (compressLog(logToCompress, compressedName)) {
+                QFile::remove(logToCompress);
             } else {
                 QFile::remove(compressedName);
             }