Skip to content

Commit 4b764d0

Browse files
author
Till Brehm
committed
Merge branch '6856-limit-log-messages' into 'develop'
Implement limitation of db log messages that exceed a defined limit Closes #6856 See merge request ispconfig/ispconfig3!2008
2 parents a910e4d + ba0b25d commit 4b764d0

File tree

3 files changed

+20
-9
lines changed

3 files changed

+20
-9
lines changed

install/tpl/config.inc.php.master

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ $conf['demo_mode'] = false;
139139
//** Logging
140140
$conf['log_file'] = $conf['ispconfig_log_dir'].$conf['fs_div'].'ispconfig.log';
141141
$conf['log_priority'] = {ispconfig_log_priority}; // 0 = Debug, 1 = Warning, 2 = Error
142+
$conf['db_log_message_max_length'] = 32768;
142143

143144

144145
//** Themes

install/update.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,8 @@
187187

188188
$conf['server_id'] = intval($conf_old["server_id"]);
189189
$conf['ispconfig_log_priority'] = $conf_old["log_priority"];
190+
$conf['db_log_message_max_length'] = (isset($conf_old['db_log_message_max_length'])) ? $conf_old['db_log_message_max_length'] : '32768';
191+
190192

191193
$inst = new installer();
192194
$inst->is_update = true;
@@ -377,25 +379,25 @@
377379

378380
if(isset($conf['apache']['installed']) && $conf['apache']['installed'] == true || isset($conf['nginx']['installed']) && $conf['nginx']['installed'] == true) {
379381
$conf['services']['web'] = check_service_config_state('web_server', true);
380-
} else {
382+
} else {
381383
$conf['services']['web'] = check_service_config_state('web_server', false);
382384
}
383385

384386
if(isset($conf['xmpp']['installed']) && $conf['xmpp']['installed'] == true) {
385387
$conf['services']['xmpp'] = check_service_config_state('xmpp_server', true);
386-
} else {
388+
} else {
387389
$conf['services']['xmpp'] = check_service_config_state('xmpp_server', false);
388390
}
389391

390392
if(isset($conf['ufw']['installed']) && $conf['ufw']['installed'] == true || isset($conf['firewall']['installed']) && $conf['firewall']['installed'] == true) {
391393
$conf['services']['firewall'] = check_service_config_state('firewall_server', true);
392-
} else {
394+
} else {
393395
$conf['services']['firewall'] = check_service_config_state('firewall_server', false);
394396
}
395397

396398
if(isset($conf['vserver']['installed']) && $conf['vserver']['installed'] == true) {
397399
$conf['services']['vserver'] = check_service_config_state('vserver_server', true);
398-
} else {
400+
} else {
399401
$conf['services']['vserver'] = check_service_config_state('vserver_server', false);
400402
}
401403

server/lib/app.inc.php

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -311,18 +311,26 @@ function log($msg, $priority = 0, $dblog = true) {
311311
if($dblog === true && isset($this->dbmaster)) {
312312
$server_id = $conf['server_id'];
313313
$loglevel = $priority;
314-
$message = $msg;
315-
$datalog_id = (isset($this->modules->current_datalog_id) && $this->modules->current_datalog_id > 0)? $this->modules->current_datalog_id : 0;
314+
315+
// Truncate the message for database logging if a limit is set and if the message exceeds that limit
316+
// Full message is logged to the logfiles
317+
$db_message = $msg;
318+
if(isset($conf['db_log_message_max_length']) && is_int($conf['db_log_message_max_length']) && $conf['db_log_message_max_length'] > 0) {
319+
if(strlen($db_message) > $conf['db_log_message_max_length']) {
320+
$db_message = substr($db_message, 0, $conf['db_log_message_max_length']) . '...';
321+
}
322+
}
323+
324+
$datalog_id = (isset($this->modules->current_datalog_id) && $this->modules->current_datalog_id > 0) ? $this->modules->current_datalog_id : 0;
316325
if($datalog_id > 0) {
317326
$tmp_rec = $this->dbmaster->queryOneRecord("SELECT count(syslog_id) as number FROM sys_log WHERE datalog_id = ? AND loglevel = ?", $datalog_id, LOGLEVEL_ERROR);
318-
//* Do not insert duplicate errors into the web log.
319327
if($tmp_rec['number'] == 0) {
320328
$sql = "INSERT INTO sys_log (server_id,datalog_id,loglevel,tstamp,message) VALUES (?, ?, ?, UNIX_TIMESTAMP(), ?)";
321-
$this->dbmaster->query($sql, $server_id, $datalog_id, $loglevel, $message);
329+
$this->dbmaster->query($sql, $server_id, $datalog_id, $loglevel, $db_message);
322330
}
323331
} else {
324332
$sql = "INSERT INTO sys_log (server_id,datalog_id,loglevel,tstamp,message) VALUES (?, 0, ?, UNIX_TIMESTAMP(), ?)";
325-
$this->dbmaster->query($sql, $server_id, $loglevel, $message);
333+
$this->dbmaster->query($sql, $server_id, $loglevel, $db_message);
326334
}
327335
}
328336

0 commit comments

Comments
 (0)