protected function MonologLoggerChannelFactory::getChannelInstance in Monolog 2.x
Same name and namespace in other branches
- 8 src/Logger/MonologLoggerChannelFactory.php \Drupal\monolog\Logger\MonologLoggerChannelFactory::getChannelInstance()
Factory function for Monolog loggers.
Parameters
string $channel_name: The name the logging channel.
Return value
\Psr\Log\LoggerInterface Describes a logger instance.
Throws
\RuntimeException
\InvalidArgumentException
1 call to MonologLoggerChannelFactory::getChannelInstance()
- MonologLoggerChannelFactory::get in src/
Logger/ MonologLoggerChannelFactory.php - Retrieves the registered logger for the requested channel.
File
- src/
Logger/ MonologLoggerChannelFactory.php, line 71
Class
- MonologLoggerChannelFactory
- Defines a factory for logging channels.
Namespace
Drupal\monolog\LoggerCode
protected function getChannelInstance($channel_name) {
if (!class_exists('Monolog\\Logger')) {
throw new \RuntimeException('The Monolog\\Logger class was not found. Make sure the Monolog package is installed via Composer.');
}
if (!$this->container) {
// We need the container to read parameters etc.
return new NullLogger();
}
$logger = new Logger($channel_name);
$parameters = $this->container
->getParameter('monolog.channel_handlers');
$config = array_key_exists($channel_name, $parameters) ? $parameters[$channel_name] : $parameters['default'];
$formatter = NULL;
$handlers = $config;
if (array_key_exists('handlers', $config)) {
$formatter = $config['formatter'];
$handlers = $config['handlers'];
}
foreach ($handlers as $handler) {
/** @var \Monolog\Handler\HandlerInterface $h */
$h = $this->container
->get('monolog.handler.' . $handler);
if ($formatter && $this->container
->has('monolog.formatter.' . $formatter)) {
/** @var \Monolog\Formatter\FormatterInterface $f */
$f = $this->container
->get('monolog.formatter.' . $formatter);
$h
->setFormatter($f);
}
$logger
->pushHandler($h);
}
foreach ($this->container
->getParameter('monolog.processors') as $processor) {
$logger
->pushProcessor($this->container
->get('monolog.processor.' . $processor));
}
return $logger;
}