. * */ namespace Friendica\Core\Logger\Factory; use Friendica\Core\Config\Capability\IManageConfigValues; use Friendica\Core\Logger\Exception\LoggerException; use Friendica\Core\Logger\Exception\LogLevelException; use Friendica\Core\Logger\Type\SyslogLogger as SyslogLoggerClass; use Psr\Log\LoggerInterface; /** * The logger factory for the SyslogLogger instance * * @see SyslogLoggerClass */ class SyslogLogger extends AbstractLoggerTypeFactory { /** * Creates a new PSR-3 compliant syslog logger instance * * @param IManageConfigValues $config The system configuration * * @return LoggerInterface The PSR-3 compliant logger instance * * @throws LoggerException in case the logger cannot get created */ public function create(IManageConfigValues $config): LoggerInterface { $logOpts = $config->get('system', 'syslog_flags') ?? SyslogLoggerClass::DEFAULT_FLAGS; $logFacility = $config->get('system', 'syslog_facility') ?? SyslogLoggerClass::DEFAULT_FACILITY; $loglevel = SyslogLogger::mapLegacyConfigDebugLevel($config->get('system', 'loglevel')); if (array_key_exists($loglevel, SyslogLoggerClass::logLevels)) { $loglevel = SyslogLoggerClass::logLevels[$loglevel]; } else { throw new LogLevelException(sprintf('The level "%s" is not valid.', $loglevel)); } return new SyslogLoggerClass($this->channel, $this->introspection, $loglevel, $logOpts, $logFacility); } }