From da0a81730e3cd5e400fef1bf1ecefdeac9e5c759 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Tue, 18 Feb 2014 15:01:08 +0100
Subject: [PATCH] Added cron log rotation and compression

---
 .../lib/classes/cron.d/200-logfiles.inc.php   | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php
index ebf159c877..19b5b507e5 100644
--- a/server/lib/classes/cron.d/200-logfiles.inc.php
+++ b/server/lib/classes/cron.d/200-logfiles.inc.php
@@ -112,6 +112,30 @@ class cronjob_logfiles extends cronjob {
 				exec("gzip -c $logfile > $logfile.gz");
 				unlink($logfile);
 			}
+			
+			$cron_logfiles = array('cron.log', 'cron_error.log', 'cron_wget.log');
+			foreach($cron_logfiles as $cron_logfile) {
+				$cron_logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/' . $cron_logfile);
+				
+				// rename older files (move up by one)
+				$num = 7;
+				while($num >= 1 && is_file($cron_logfile . '.' . $num . '.gz')) {
+					rename($cron_logfile . '.' . $num . '.gz', $cron_logfile . '.' . ($num + 1) . '.gz');
+					$num--;
+				}
+				
+				// compress current logfile
+				if(is_file($cron_logfile) && filesize($cron_logfile) > 10000000) {
+					exec("gzip -c $cron_logfile > $cron_logfile.1.gz");
+					exec("cat /dev/null > $cron_logfile");
+				}
+				// remove older logs
+				$num = 7;
+				while(is_file($cron_logfile . '.' . $num . '.gz')) {
+					@unlink($cron_logfile . '.' . $num . '.gz');
+					$num++;
+				}
+			}
 
 			// rotate and compress the error.log when it exceeds a size of 10 MB
 			$logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/error.log');
-- 
GitLab