Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Logger/LoggerChannelTrait.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Logger/LoggerChannelTrait.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,58 @@ +<?php + +namespace Drupal\Core\Logger; + +/** + * Wrapper methods for the logger factory service. + * + * This utility trait should only be used in application-level code, such as + * classes that would implement ContainerInjectionInterface. Services registered + * in the Container should not use this trait but inject the appropriate service + * directly for easier testing. + * + * @see \Drupal\Core\DependencyInjection\ContainerInjectionInterface + */ +trait LoggerChannelTrait { + + /** + * The logger channel factory service. + * + * @var \Drupal\Core\Logger\LoggerChannelFactoryInterface + */ + protected $loggerFactory; + + /** + * Gets the logger for a specific channel. + * + * @param string $channel + * The name of the channel. Can be any string, but the general practice is + * to use the name of the subsystem calling this. + * + * @return \Psr\Log\LoggerInterface + * The logger for the given channel. + * + * @todo Require the use of injected services: + * https://www.drupal.org/node/2733703 + */ + protected function getLogger($channel) { + if (!$this->loggerFactory) { + $this->loggerFactory = \Drupal::service('logger.factory'); + } + return $this->loggerFactory->get($channel); + } + + /** + * Injects the logger channel factory. + * + * @param \Drupal\Core\Logger\LoggerChannelFactoryInterface $logger_factory + * The logger channel factory service. + * + * @return $this + */ + public function setLoggerFactory(LoggerChannelFactoryInterface $logger_factory) { + $this->loggerFactory = $logger_factory; + + return $this; + } + +}