diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php
index 7f3378744fb95766ff08d8cc6491a76d5e925eb3..f05e4e20e2f81c8e86992105e45e4cbbdbb2f2fd 100644
--- a/server/lib/classes/cron.d/200-logfiles.inc.php
+++ b/server/lib/classes/cron.d/200-logfiles.inc.php
@@ -175,25 +175,26 @@ class cronjob_logfiles extends cronjob {
 		// Rotate the ispconfig.log file
 		//######################################################################################################
 
-		// rotate the ispconfig.log when it exceeds a size of 10 MB
-		$logfile = $conf['ispconfig_log_dir'].'/ispconfig.log';
-		if(is_file($logfile) && filesize($logfile) > 10000000) {
-			exec("gzip -c $logfile > $logfile.1.gz");
-			exec("cat /dev/null > $logfile");
-		}
-
-		// rotate the cron.log when it exceeds a size of 10 MB
-		$logfile = $conf['ispconfig_log_dir'].'/cron.log';
-		if(is_file($logfile) && filesize($logfile) > 10000000) {
-			exec("gzip -c $logfile > $logfile.1.gz");
-			exec("cat /dev/null > $logfile");
-		}
+		$num = 10;
 
-		// rotate the auth.log when it exceeds a size of 10 MB
-		$logfile = $conf['ispconfig_log_dir'].'/auth.log';
-		if(is_file($logfile) && filesize($logfile) > 10000000) {
-			exec("gzip -c $logfile > $logfile.1.gz");
-			exec("cat /dev/null > $logfile");
+		$ispconfig_logfiles = array('ispconfig.log', 'cron.log', 'auth.log');
+		foreach($ispconfig_logfiles as $ispconfig_logfile) {
+			$ispconfig_logfile = escapeshellcmd($conf['ispconfig_log_dir'].'/'.$ispconfig_logfile);
+			// rename older files (move up by one)
+			while($num >= 1 && is_file($ispconfig_logfile . '.' . $num . '.gz')) {
+				rename($ispconfig_logfile . '.' . $num . '.gz', $ispconfig_logfile . '.' . ($num + 1) . '.gz');
+				$num--;
+			}
+			// compress current logfile
+			if(is_file($ispconfig_logfile)) {
+				exec("gzip -c $ispconfig_logfile > $ispconfig_logfile.1.gz");
+				exec("cat /dev/null > $ispconfig_logfile");
+			}
+			// remove older logs
+			while(is_file($ispconfig_logfile . '.' . $num . '.gz')) {
+				@unlink($ispconfig_logfile . '.' . $num . '.gz');
+				$num++;
+			}
 		}
 
 		//######################################################################################################