Skip to content

Commit a14eb49

Browse files
committed
WiP log file retention for webserver logs
1 parent 0b3b1f6 commit a14eb49

File tree

6 files changed

+32
-5
lines changed

6 files changed

+32
-5
lines changed

install/sql/ispconfig3.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1986,6 +1986,7 @@ CREATE TABLE `web_domain` (
19861986
`http_port` int(11) unsigned NOT NULL DEFAULT '80',
19871987
`https_port` int(11) unsigned NOT NULL DEFAULT '443',
19881988
`folder_directive_snippets` text,
1989+
`log_retention` int(11) NOT NULL DEFAULT '30',
19891990
PRIMARY KEY (`domain_id`),
19901991
UNIQUE KEY `serverdomain` ( `server_id` , `ip_address`, `domain` )
19911992
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

interface/web/sites/form/web_vhost_domain.tform.php

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -917,7 +917,19 @@
917917
'value' => '',
918918
'width' => '3',
919919
'maxlength' => '6'
920-
)
920+
),
921+
'log_retention' => array (
922+
'datatype' => 'INTEGER',
923+
'formtype' => 'TEXT',
924+
'validators' => array ( 0 => array ( 'type' => 'REGEX',
925+
'regex' => '/^([0-9]{1,5})$/',
926+
'errmsg'=> 'log_retention_error_regex'),
927+
),
928+
'default' => '30',
929+
'value' => '',
930+
'width' => '4',
931+
'maxlength' => '6'
932+
)
921933
//#################################
922934
// ENDE Datatable fields
923935
//#################################

interface/web/sites/lib/lang/de_web_domain.lng

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,4 +133,6 @@ $wb['http_port_txt'] = 'HTTP Port';
133133
$wb['https_port_txt'] = 'HTTPS Port';
134134
$wb['http_port_error_regex'] = 'HTTP Port invalid.';
135135
$wb['https_port_error_regex'] = 'HTTPS Port invalid.';
136+
$wb['log_retention_txt'] = 'Log-Datei Aufbewahrungszeit';
137+
$wb['log_retention_error_regex'] = 'Nur Nummern von 0-9999 zulässig.'
136138
?>

interface/web/sites/lib/lang/de_web_vhost_domain.lng

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,4 +148,6 @@ $wb['https_port_txt'] = 'HTTPS Port';
148148
$wb['http_port_error_regex'] = 'HTTP Port invalid.';
149149
$wb['https_port_error_regex'] = 'HTTPS Port invalid.';
150150
$wb['enable_pagespeed_txt'] = 'Enable PageSpeed';
151+
$wb['log_retention_txt'] = 'Log-Datei Aufbewahrungszeit';
152+
$wb['log_retention_error_regex'] = 'Nur Nummern von 0-9999 zulässig.'
151153
?>

interface/web/sites/templates/web_vhost_domain_advanced.htm

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ <h1><tmpl_var name="list_head_txt"></h1>
3535
</div>
3636
<input name="system_group" id="system_group" value="{tmpl_var name='system_group'}" type="hidden" />
3737
</div>
38+
<div class="form-group">
39+
<label for="log_retention" class="col-sm-3 control-label">{tmpl_var name='log_retention_txt'}</label>
40+
<div class="col-sm-9"><input name="log_retention" id="log_retention" value="{tmpl_var name='log_retention'}" type="text" class="form-control" /></div>
41+
</div>
3842
<div class="form-group apache">
3943
<label for="allow_override" class="col-sm-3 control-label">{tmpl_var name='allow_override_txt'}</label>
4044
<div class="col-sm-9"><input type="text" name="allow_override" id="allow_override" value="{tmpl_var name='allow_override'}" class="form-control" /></div></div>

server/lib/classes/cron.d/200-logfiles.inc.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public function onRunJob() {
6060
// Manage and compress web logfiles and create traffic statistics
6161
//######################################################################################################
6262

63-
$sql = "SELECT domain_id, domain, type, document_root, web_folder, parent_domain_id FROM web_domain WHERE (type = 'vhost' or type = 'vhostsubdomain' or type = 'vhostalias') AND server_id = ?";
63+
$sql = "SELECT domain_id, domain, type, document_root, web_folder, parent_domain_id, log_retention FROM web_domain WHERE (type = 'vhost' or type = 'vhostsubdomain' or type = 'vhostalias') AND server_id = ?";
6464
$records = $app->db->queryAllRecords($sql, $conf['server_id']);
6565
foreach($records as $rec) {
6666

@@ -76,6 +76,8 @@ public function onRunJob() {
7676
unset($tmp);
7777
}
7878

79+
$log_retention = $rec['log_retention'];
80+
7981
$logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log';
8082
$total_bytes = 0;
8183

@@ -142,21 +144,25 @@ public function onRunJob() {
142144
exec("cat /dev/null > $logfile");
143145
}
144146

145-
// delete logfiles after 30 days
146-
$month_ago = date('Ymd', time() - 86400 * 30);
147+
// delete logfiles after x days (default 30)
148+
if($log_retention > 0) {
149+
$month_ago = date('Ymd', time() - 86400 * $log_retention);
147150
$logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$month_ago.'-access.log.gz');
148151
if(@is_file($logfile)) {
149152
unlink($logfile);
150153
}
154+
}
151155

152156
//* Delete older Log files, in case that we missed them before due to serverdowntimes.
153-
$datepart = date('Ym', time() - 86400 * 31 * 2);
157+
if($log_retention > 0) {
158+
$datepart = date('Ym', time() - 86400 * $log_retention+1 * 2);
154159

155160
$logfile = escapeshellcmd($rec['document_root']).'/' . $log_folder . '/'.$datepart.'*-access.log.gz';
156161
exec('rm -f '.$logfile);
157162

158163
$logfile = escapeshellcmd($rec['document_root']).'/' . $log_folder . '/'.$datepart.'*-access.log';
159164
exec('rm -f '.$logfile);
165+
}
160166
}
161167

162168
//* Delete old logfiles in /var/log/ispconfig/httpd/ that were created by vlogger for the hostname of the server

0 commit comments

Comments
 (0)