From 10eb2f3b59d1d4b2d2f7d4246526e95f574be4f6 Mon Sep 17 00:00:00 2001 From: florian030 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 97f6c77f4..7f3378744 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