. * */ namespace Friendica\Core\Logger\Factory; use Friendica\Core\Config\Capability\IManageConfigValues; use Friendica\Core\Hooks\Capabilities\ICanCreateInstances; use Friendica\Core\Logger\Capabilities\LogChannel; use Psr\Log\LoggerInterface; use Psr\Log\NullLogger; use Throwable; /** * The logger factory for the core logging instances */ class Logger { /** @var string The channel */ protected $channel; public function __construct(string $channel = LogChannel::DEFAULT) { $this->channel = $channel; } public function create(ICanCreateInstances $createInstances, IManageConfigValues $config): LoggerInterface { if (empty($config->get('system', 'debugging') ?? false)) { return new NullLogger(); } $name = $config->get('system', 'logger_config') ?? ''; try { return $createInstances->createWithName(LoggerInterface::class, $name, [$this->channel]); } catch (Throwable $e) { // No logger ... return new NullLogger(); } } }