diff --git a/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterLoggersPass.php b/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterLoggersPass.php index 1acb15e..65b691d 100644 --- a/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterLoggersPass.php +++ b/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterLoggersPass.php @@ -8,6 +8,7 @@ namespace Drupal\Core\DependencyInjection\Compiler; use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\Reference; @@ -19,7 +20,9 @@ class RegisterLoggersPass implements CompilerPassInterface { public function process(ContainerBuilder $container) { $definitions = array(); foreach ($container->findTaggedServiceIds('logger_channel') as $id => $attributes) { - $definitions[] = $container->getDefinition($id); + $definition = $container->getDefinition($id); + $definition->addMethodCall('setRequest', array(new Reference('request', ContainerInterface::IGNORE_ON_INVALID_REFERENCE))); + $definitions[] = $definition; } // Loop through all available logger services (eg dblog, syslog) and add // the available logging channels diff --git a/core/lib/Drupal/Core/Logger/LoggerChannel.php b/core/lib/Drupal/Core/Logger/LoggerChannel.php index 027309a..9592a4f 100644 --- a/core/lib/Drupal/Core/Logger/LoggerChannel.php +++ b/core/lib/Drupal/Core/Logger/LoggerChannel.php @@ -57,18 +57,26 @@ public function __construct($channel = 'system') { * {@inheritdoc} */ public function log($level, $message, array $context = array()) { - // @todo Retrieve from request once https://drupal.org/node/1890878 is in. - global $user; + // Merge in defaults. $context += array( 'type' => $this->channel, 'link' => '', - 'user' => $user, - 'uid' => isset($user->uid) ? $user->uid : 0, - 'request_uri' => $this->request->server->get('REQUEST_URI', ''), - 'referer' => $this->request->server->get('HTTP_REFERER', ''), - 'ip' => $this->request->getClientIP(), + 'user' => NULL, + 'uid' => 0, + 'request_uri' => '', + 'referer' => '', + 'ip' => '', 'timestamp' => time(), ); + // Some context values are only available when in a request context. + if ($this->request) { + $context['user'] = $this->request->attributes->get('account'); + $context['uid'] = isset($context['user']) ? $context['user']->id() : 0; + $context['request_uri'] = $this->request->getUri(); + $context['referer'] = $this->request->headers->get('Referer', ''); + $context['ip'] = $this->request->getClientIP(); + } + if (is_string($level)) { // Convert to integer equivalent for BC and PHP syslog() compatibility. $level = $this->mapLevel($level); @@ -104,6 +112,9 @@ public function addLogger(LoggerInterface $logger, $priority = 0) { /** * Converts a PSR Log level to a Watchdog log level. * + * This only exists for BC. + * @todo Remove once watchdog() is removed. + * * @param string $level * A PSR-3 logging level string. * @@ -112,7 +123,8 @@ public function addLogger(LoggerInterface $logger, $priority = 0) { */ protected function mapLevel($level) { if (empty($this->levelTranslation)) { - // Use PHP constants to keep this unit-testable. + // Use PHP constants which are the same with watchdog's ones to keep this + // unit-testable. $this->levelTranslation = array( LogLevel::EMERGENCY => LOG_EMERG, LogLevel::ALERT => LOG_ALERT, diff --git a/core/modules/action/action.services.yml b/core/modules/action/action.services.yml index 18a114e..709f763 100644 --- a/core/modules/action/action.services.yml +++ b/core/modules/action/action.services.yml @@ -2,7 +2,5 @@ services: logger.channel.action: class: Drupal\Core\Logger\LoggerChannel arguments: ['action'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/aggregator/aggregator.services.yml b/core/modules/aggregator/aggregator.services.yml index ac61a29..e1e1372 100644 --- a/core/modules/aggregator/aggregator.services.yml +++ b/core/modules/aggregator/aggregator.services.yml @@ -16,7 +16,5 @@ services: logger.channel.aggregator: class: Drupal\Core\Logger\LoggerChannel arguments: ['aggregator'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/block/custom_block/custom_block.services.yml b/core/modules/block/custom_block/custom_block.services.yml index 6edab11..faa8500 100644 --- a/core/modules/block/custom_block/custom_block.services.yml +++ b/core/modules/block/custom_block/custom_block.services.yml @@ -2,7 +2,5 @@ services: logger.channel.custom_block: class: Drupal\Core\Logger\LoggerChannel arguments: ['custom block'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/contact/contact.services.yml b/core/modules/contact/contact.services.yml index 9601bbb..91d5b68 100644 --- a/core/modules/contact/contact.services.yml +++ b/core/modules/contact/contact.services.yml @@ -2,7 +2,5 @@ services: logger.channel.contact: class: Drupal\Core\Logger\LoggerChannel arguments: ['contact'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/dblog/lib/Drupal/dblog/Logger/DbLog.php b/core/modules/dblog/lib/Drupal/dblog/Logger/DbLog.php index 47af121..d15bf0a 100644 --- a/core/modules/dblog/lib/Drupal/dblog/Logger/DbLog.php +++ b/core/modules/dblog/lib/Drupal/dblog/Logger/DbLog.php @@ -39,6 +39,8 @@ public function log($level, $message, array $context = array()) { // Remove any backtraces since they may contain an unserializable variable. unset($context['backtrace']); + // Convert PSR3-style messages to format_string() style, so they can be + // translated too in runtime. $this->parseMessagePlaceholders($message, $context); $this->database diff --git a/core/modules/file/file.services.yml b/core/modules/file/file.services.yml index e9f928a..d27b37b 100644 --- a/core/modules/file/file.services.yml +++ b/core/modules/file/file.services.yml @@ -5,7 +5,5 @@ services: logger.channel.file: class: Drupal\Core\Logger\LoggerChannel arguments: ['file'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/filter/filter.services.yml b/core/modules/filter/filter.services.yml index 4f79be4..62df327 100644 --- a/core/modules/filter/filter.services.yml +++ b/core/modules/filter/filter.services.yml @@ -20,7 +20,5 @@ services: logger.channel.filter: class: Drupal\Core\Logger\LoggerChannel arguments: ['filter'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/forum/forum.services.yml b/core/modules/forum/forum.services.yml index a9e5ac8..8a7b98a 100644 --- a/core/modules/forum/forum.services.yml +++ b/core/modules/forum/forum.services.yml @@ -7,7 +7,5 @@ services: logger.channel.forum: class: Drupal\Core\Logger\LoggerChannel arguments: ['forum'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/image/image.services.yml b/core/modules/image/image.services.yml index 6f327f4..a25e448 100644 --- a/core/modules/image/image.services.yml +++ b/core/modules/image/image.services.yml @@ -2,7 +2,5 @@ services: logger.channel.image: class: Drupal\Core\Logger\LoggerChannel arguments: ['image'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/language/language.services.yml b/core/modules/language/language.services.yml index b00afe6..caff67d 100644 --- a/core/modules/language/language.services.yml +++ b/core/modules/language/language.services.yml @@ -8,7 +8,5 @@ services: logger.channel.language: class: Drupal\Core\Logger\LoggerChannel arguments: ['language'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/locale/locale.services.yml b/core/modules/locale/locale.services.yml index d6704d5..b02f963 100644 --- a/core/modules/locale/locale.services.yml +++ b/core/modules/locale/locale.services.yml @@ -19,7 +19,5 @@ services: logger.channel.locale: class: Drupal\Core\Logger\LoggerChannel arguments: ['locale'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/menu/menu.services.yml b/core/modules/menu/menu.services.yml index 1d9fcc6..bd923a7 100644 --- a/core/modules/menu/menu.services.yml +++ b/core/modules/menu/menu.services.yml @@ -10,7 +10,5 @@ services: logger.channel.menu: class: Drupal\Core\Logger\LoggerChannel arguments: ['menu'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/node/node.services.yml b/core/modules/node/node.services.yml index 08be04b..f340e46 100644 --- a/core/modules/node/node.services.yml +++ b/core/modules/node/node.services.yml @@ -10,14 +10,10 @@ services: logger.channel.content: class: Drupal\Core\Logger\LoggerChannel arguments: ['content'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } logger.channel.node: class: Drupal\Core\Logger\LoggerChannel arguments: ['node'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/picture/picture.services.yml b/core/modules/picture/picture.services.yml index fb5fd7b..429c5ff 100644 --- a/core/modules/picture/picture.services.yml +++ b/core/modules/picture/picture.services.yml @@ -2,7 +2,5 @@ services: logger.channel.picture: class: Drupal\Core\Logger\LoggerChannel arguments: ['picture'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/rest/rest.services.yml b/core/modules/rest/rest.services.yml index b069720..5d4cd0a 100644 --- a/core/modules/rest/rest.services.yml +++ b/core/modules/rest/rest.services.yml @@ -23,7 +23,5 @@ services: logger.channel.rest: class: Drupal\Core\Logger\LoggerChannel arguments: ['rest'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/search/search.services.yml b/core/modules/search/search.services.yml index 5e09c64..d6a703e 100644 --- a/core/modules/search/search.services.yml +++ b/core/modules/search/search.services.yml @@ -2,7 +2,5 @@ services: logger.channel.search: class: Drupal\Core\Logger\LoggerChannel arguments: ['search'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/syslog/lib/Drupal/syslog/Logger/SysLog.php b/core/modules/syslog/lib/Drupal/syslog/Logger/SysLog.php index 48b4d80..87dd173 100644 --- a/core/modules/syslog/lib/Drupal/syslog/Logger/SysLog.php +++ b/core/modules/syslog/lib/Drupal/syslog/Logger/SysLog.php @@ -42,15 +42,9 @@ public function __construct(ConfigFactory $config_factory) { */ public function log($level, $message, array $context = array()) { global $base_url; - $variables = array(); + // Populate the $context['variables'] with the message placeholders. $this->parseMessagePlaceholders($message, $context); - foreach ($context['variables'] as $key => $variable) { - // A message placeholder will be in format_string() style after parsing. - if (strpos($key, '@') === 0 || strpos($key, '%') === 0 || strpos($key, '!') === 0) { - $variables[$key] = $variable; - } - } $entry = strtr($this->config->get('format'), array( '!base_url' => $base_url, @@ -61,7 +55,7 @@ public function log($level, $message, array $context = array()) { '!referer' => $context['referer'], '!uid' => $context['uid'], '!link' => strip_tags($context['link']), - '!message' => strip_tags(empty($variables) ? $message : strtr($message, $variables)), + '!message' => strip_tags(empty($context['variables']) ? $message : strtr($message, $context['variables'])), )); syslog($level, $entry); diff --git a/core/modules/system/system.services.yml b/core/modules/system/system.services.yml index cf9a261..979177c 100644 --- a/core/modules/system/system.services.yml +++ b/core/modules/system/system.services.yml @@ -20,70 +20,55 @@ services: logger.channel.access_denied: class: Drupal\Core\Logger\LoggerChannel arguments: ['access denied'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } logger.channel.ajax: class: Drupal\Core\Logger\LoggerChannel arguments: ['ajax'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } logger.channel.cron: class: Drupal\Core\Logger\LoggerChannel arguments: ['cron'] - calls: - - [setRequest, ['@?request']] + tags: + - { name: logger_channel } + logger.channel.debug: + class: Drupal\Core\Logger\LoggerChannel + arguments: ['debug'] tags: - { name: logger_channel } logger.channel.file_system: class: Drupal\Core\Logger\LoggerChannel arguments: ['file system'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } logger.channel.form: class: Drupal\Core\Logger\LoggerChannel arguments: ['form'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } logger.channel.mail: class: Drupal\Core\Logger\LoggerChannel arguments: ['mail'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } logger.channel.theme: class: Drupal\Core\Logger\LoggerChannel arguments: ['theme'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } logger.channel.page_not_found: class: Drupal\Core\Logger\LoggerChannel arguments: ['page not found'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } logger.channel.php: class: Drupal\Core\Logger\LoggerChannel arguments: ['php'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } logger.channel.security: class: Drupal\Core\Logger\LoggerChannel arguments: ['security'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/taxonomy/taxonomy.services.yml b/core/modules/taxonomy/taxonomy.services.yml index ecceb76..036cf27 100644 --- a/core/modules/taxonomy/taxonomy.services.yml +++ b/core/modules/taxonomy/taxonomy.services.yml @@ -7,7 +7,5 @@ services: logger.channel.taxonomy: class: Drupal\Core\Logger\LoggerChannel arguments: ['taxonomy'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/tracker/tracker.services.yml b/core/modules/tracker/tracker.services.yml index f14e154..a2930d0 100644 --- a/core/modules/tracker/tracker.services.yml +++ b/core/modules/tracker/tracker.services.yml @@ -2,7 +2,5 @@ services: logger.channel.tracker: class: Drupal\Core\Logger\LoggerChannel arguments: ['tracker'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/user/user.services.yml b/core/modules/user/user.services.yml index 3504f21..df8870c 100644 --- a/core/modules/user/user.services.yml +++ b/core/modules/user/user.services.yml @@ -28,7 +28,5 @@ services: logger.channel.user: class: Drupal\Core\Logger\LoggerChannel arguments: ['user'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel } diff --git a/core/modules/views/views.services.yml b/core/modules/views/views.services.yml index 47fd2bb..bc55ea5 100644 --- a/core/modules/views/views.services.yml +++ b/core/modules/views/views.services.yml @@ -93,7 +93,5 @@ services: logger.channel.views: class: Drupal\Core\Logger\LoggerChannel arguments: ['views'] - calls: - - [setRequest, ['@?request']] tags: - { name: logger_channel }