* New option that write logs to per-user directories. (Debug) logs will only be written if a directory for the current user exists.

* The 'write_log' plugin hook now also supports the return property 'dir' to let plugins specify the log directory.
pull/163/head
Thomas Bruederli 11 years ago
parent c5f6352710
commit 3786a48aeb

@ -73,6 +73,10 @@ $config['syslog_id'] = 'roundcube';
// For possible values see installer or http://php.net/manual/en/function.openlog.php // For possible values see installer or http://php.net/manual/en/function.openlog.php
$config['syslog_facility'] = LOG_USER; $config['syslog_facility'] = LOG_USER;
// Activate this option if logs should be written to per-user directories.
// Data will only be logged if a directry <log_dir>/<username>/ exists and is writable.
$config['per_user_logging'] = false;
// Log sent messages to <log_dir>/sendmail or to syslog // Log sent messages to <log_dir>/sendmail or to syslog
$config['smtp_log'] = true; $config['smtp_log'] = true;

@ -1114,7 +1114,20 @@ class rcube
// log_driver == 'file' is assumed here // log_driver == 'file' is assumed here
$line = sprintf("[%s]: %s\n", $date, $line); $line = sprintf("[%s]: %s\n", $date, $line);
$log_dir = self::$instance ? self::$instance->config->get('log_dir') : null; $log_dir = null;
// per-user logging is activated
if (self::$instance && self::$instance->config->get('per_user_logging', false) && self::$instance->get_user_id()) {
$log_dir = self::$instance->get_user_log_dir();
if (empty($log_dir))
return false;
}
else if (!empty($log['dir'])) {
$log_dir = $log['dir'];
}
else if (self::$instance) {
$log_dir = self::$instance->config->get('log_dir');
}
if (empty($log_dir)) { if (empty($log_dir)) {
$log_dir = RCUBE_INSTALL_PATH . 'logs'; $log_dir = RCUBE_INSTALL_PATH . 'logs';
@ -1352,6 +1365,17 @@ class rcube
} }
} }
/**
* Get the per-user log directory
*/
protected function get_user_log_dir()
{
$log_dir = $this->config->get('log_dir', RCUBE_INSTALL_PATH . 'logs');
$user_name = $this->get_user_name();
$user_log_dir = $log_dir . '/' . $user_name;
return !empty($user_name) && is_writable($user_log_dir) ? $user_log_dir : false;
}
/** /**
* Getter for logged user language code. * Getter for logged user language code.

Loading…
Cancel
Save