From 10eb2f3b59d1d4b2d2f7d4246526e95f574be4f6 Mon Sep 17 00:00:00 2001
From: florian030 <florian@schaal-24.de>
Date: Fri, 18 May 2018 07:10:12 +0200
Subject: [PATCH] rotate error.log daily (Fixes #5003)

---
 server/lib/classes/cron.d/200-logfiles.inc.php | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php
index 97f6c77f41..7f3378744f 100644
--- a/server/lib/classes/cron.d/200-logfiles.inc.php
+++ b/server/lib/classes/cron.d/200-logfiles.inc.php
@@ -137,11 +137,18 @@ class cronjob_logfiles extends cronjob {
 				}
 			}
 
-			// rotate and compress the error.log when it exceeds a size of 10 MB
-			$logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/error.log');
-			if(is_file($logfile) && filesize($logfile) > 10000000) {
-				exec("gzip -c $logfile > $logfile.1.gz");
-				exec("cat /dev/null > $logfile");
+			// rotate and compress the error.log 
+			$error_logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/error.log');
+			// rename older files (move up by one)
+			$num = $log_retention;
+			while($num >= 1 && is_file($error_logfile . '.' . $num . '.gz')) {
+				rename($error_logfile . '.' . $num . '.gz', $error_logfile . '.' . ($num + 1) . '.gz');
+				$num--;
+			}
+			// compress current logfile
+			if(is_file($error_logfile)) {
+				exec("gzip -c $error_logfile > $error_logfile.1.gz");
+				exec("cat /dev/null > $error_logfile");
 			}
 
 			// delete logfiles after x days (default 30)
-- 
GitLab