trait LoggerChannelTrait

Same name in other branches
  1. 8.9.x core/lib/Drupal/Core/Logger/LoggerChannelTrait.php \Drupal\Core\Logger\LoggerChannelTrait
  2. 10 core/lib/Drupal/Core/Logger/LoggerChannelTrait.php \Drupal\Core\Logger\LoggerChannelTrait
  3. 11.x core/lib/Drupal/Core/Logger/LoggerChannelTrait.php \Drupal\Core\Logger\LoggerChannelTrait

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.

Hierarchy

See also

\Drupal\Core\DependencyInjection\ContainerInjectionInterface

5 files declare their use of LoggerChannelTrait
ControllerBase.php in core/lib/Drupal/Core/Controller/ControllerBase.php
FieldBlockDeriver.php in core/modules/layout_builder/src/Plugin/Derivative/FieldBlockDeriver.php
FormBase.php in core/lib/Drupal/Core/Form/FormBase.php
LanguageNegotiator.php in core/modules/language/src/LanguageNegotiator.php
LayoutBuilderIntegration.php in core/modules/quickedit/src/LayoutBuilderIntegration.php

File

core/lib/Drupal/Core/Logger/LoggerChannelTrait.php, line 15

Namespace

Drupal\Core\Logger
View source
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;
    }

}

Members

Title Sort descending Modifiers Object type Summary
LoggerChannelTrait::$loggerFactory protected property The logger channel factory service.
LoggerChannelTrait::getLogger protected function Gets the logger for a specific channel.
LoggerChannelTrait::setLoggerFactory public function Injects the logger channel factory.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.