summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config/config.sample.php22
-rw-r--r--lib/private/Log/Syslog.php2
-rw-r--r--lib/private/Log/Systemdlog.php16
3 files changed, 29 insertions, 11 deletions
diff --git a/config/config.sample.php b/config/config.sample.php
index 2218021bab9..68f27ed0323 100644
--- a/config/config.sample.php
+++ b/config/config.sample.php
@@ -710,18 +710,24 @@ $CONFIG = array(
*/
/**
- * By default the Nextcloud logs are sent to the ``nextcloud.log`` file in the
- * default Nextcloud data directory.
- * If syslogging is desired, set this parameter to ``syslog``.
- * Setting this parameter to ``errorlog`` will use the PHP error_log function
- * for logging.
+ * This parameter determines where the Nextcloud logs are sent.
+ * ``file``: the logs are written to file ``nextcloud.log`` in the default
+ * Nextcloud data directory. The log file can be changed with parameter
+ * ``logfile``.
+ * ``syslog``: the logs are sent to the system log. This requires a syslog daemon
+ * to be active.
+ * ``errorlog``: the logs are sent to the PHP ``error_log`` function.
+ * ``systemd``: the logs are sent to the Systemd journal. This requires a system
+ * that runs Systemd and the Systemd journal. The PHP extension ``systemd``
+ * must be installed and active.
*
* Defaults to ``file``
*/
'log_type' => 'file',
/**
- * Log file path for the Nextcloud logging type.
+ * Name of the file to which the Nextcloud logs are written if parameter
+ * ``log_type`` is set to ``file``.
*
* Defaults to ``[datadirectory]/nextcloud.log``
*/
@@ -738,7 +744,9 @@ $CONFIG = array(
/**
* If you maintain different instances and aggregate the logs, you may want
* to distinguish between them. ``syslog_tag`` can be set per instance
- * with a unique id. Only available if ``log_type`` is set to ``syslog``.
+ * with a unique id. Only available if ``log_type`` is set to ``syslog`` or
+ * ``systemd``.
+ *
* The default value is ``Nextcloud``.
*/
'syslog_tag' => 'Nextcloud',
diff --git a/lib/private/Log/Syslog.php b/lib/private/Log/Syslog.php
index 90a20026f0e..b652eb4343d 100644
--- a/lib/private/Log/Syslog.php
+++ b/lib/private/Log/Syslog.php
@@ -39,7 +39,7 @@ class Syslog implements IWriter {
];
public function __construct(IConfig $config) {
- openlog($config->getSystemValue('syslog_tag', 'ownCloud'), LOG_PID | LOG_CONS, LOG_USER);
+ openlog($config->getSystemValue('syslog_tag', 'Nextcloud'), LOG_PID | LOG_CONS, LOG_USER);
}
public function __destruct() {
diff --git a/lib/private/Log/Systemdlog.php b/lib/private/Log/Systemdlog.php
index 63b228bfa0e..40e9c12386e 100644
--- a/lib/private/Log/Systemdlog.php
+++ b/lib/private/Log/Systemdlog.php
@@ -4,7 +4,7 @@
*
* @author Johannes Ernst <jernst@indiecomputing.com>
*
- * @license AGPL-3.0
+ * @license GNU AGPL version 3 or any later version
*
* This code is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
@@ -22,6 +22,7 @@
namespace OC\Log;
+use OC\HintException;
use OCP\ILogger;
use OCP\IConfig;
use OCP\Log\IWriter;
@@ -50,11 +51,20 @@ class Systemdlog implements IWriter {
ILogger::FATAL => 2,
];
+ protected $syslogId;
+
public function __construct(IConfig $config) {
+ if(!function_exists('sd_journal_send')) {
+ throw new HintException(
+ 'PHP extension php-systemd is not available.',
+ 'Please install and enable PHP extension systemd if you wish to log to the Systemd journal.');
+
+ }
+ $this->syslogId = $config->getSystemValue('syslog_tag', 'Nextcloud');
}
/**
- * write a message in the log
+ * Write a message to the log.
* @param string $app
* @param string $message
* @param int $level
@@ -62,7 +72,7 @@ class Systemdlog implements IWriter {
public function write(string $app, $message, int $level) {
$journal_level = $this->levels[$level];
sd_journal_send('PRIORITY='.$journal_level,
- 'SYSLOG_IDENTIFIER=nextcloud',
+ 'SYSLOG_IDENTIFIER='.$this->syslogId,
'MESSAGE={'.$app.'} '.$message);
}
}