- $logger = new Monolog\Logger($channel);
- $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor());
- $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor());
- $logger->pushProcessor(new Monolog\Processor\UidProcessor());
- $logger->pushProcessor(new FriendicaIntrospectionProcessor(LogLevel::DEBUG, self::$ignoreClassList));
-
- $debugging = $config->get('system', 'debugging');
- $stream = $config->get('system', 'logfile');
- $level = $config->get('system', 'loglevel');
-
- if ($debugging) {
- $loglevel = self::mapLegacyConfigDebugLevel((string)$level);
- static::addStreamHandler($logger, $stream, $loglevel);
- } else {
- static::addVoidHandler($logger);
+ if (empty($config->get('system', 'debugging', false))) {
+ $logger = new VoidLogger();
+ $database->setLogger($logger);
+ return $logger;
+ }
+
+ $introspection = new Introspection(self::$ignoreClassList);
+ $level = $config->get('system', 'loglevel');
+ $loglevel = self::mapLegacyConfigDebugLevel((string)$level);
+
+ switch ($config->get('system', 'logger_config', 'stream')) {
+ case 'monolog':
+ $loggerTimeZone = new \DateTimeZone('UTC');
+ Monolog\Logger::setTimezone($loggerTimeZone);
+
+ $logger = new Monolog\Logger($this->channel);
+ $logger->pushProcessor(new Monolog\Processor\PsrLogMessageProcessor());
+ $logger->pushProcessor(new Monolog\Processor\ProcessIdProcessor());
+ $logger->pushProcessor(new Monolog\Processor\UidProcessor());
+ $logger->pushProcessor(new IntrospectionProcessor($introspection, LogLevel::DEBUG));
+
+ $stream = $config->get('system', 'logfile');
+
+ // just add a stream in case it's either writable or not file
+ if (!is_file($stream) || is_writable($stream)) {
+ static::addStreamHandler($logger, $stream, $loglevel);
+ }
+ break;
+
+ case 'syslog':
+ $logger = new SyslogLogger($this->channel, $introspection, $loglevel);
+ break;
+
+ case 'stream':
+ default:
+ $stream = $config->get('system', 'logfile');
+ // just add a stream in case it's either writable or not file
+ if (!is_file($stream) || is_writable($stream)) {
+ $logger = new StreamLogger($this->channel, $stream, $introspection, $loglevel);
+ } else {
+ $logger = new VoidLogger();
+ }
+ break;