Drupal8模块开发 - Drupal8 Logging API

翻译者:长风Drupal开发:Drupal8 Logging API

原文链接:https://www.drupal.org/docs/8/api/logging-api/overview

本章节我们学习Drupal8 Logging API.
在Drupal8中,hook_watchdog()已经不再被支持了,如果一个Drupal8的模块要实现日志,就必需注册一个日志的服务
services:

logger.mylog:
class: Drupal\mylog\Logger\MyLog
tags:
- { name: logger }
这个类必需继承 \Psr\Log\LoggerInterface
namespace Drupal\mylog\Logger;

use Drupal\Core\Logger\RfcLoggerTrait;
use Psr\Log\LoggerInterface;

class MyLog implements LoggerInterface {
use RfcLoggerTrait;

/**
 * {@inheritdoc}
 */
public function log($level, $message, array $context = array()) {
// Do stuff
}

}

在Drupal8中,watchdog($type, $message, $variables, $severity, $link) 已经不再被支持,替代的Drupal8 Logging API是: \Drupal::logger($type)->log($severity, $message, $variables)

Drupal7中的watchdog如下:
// Logs a notice
watchdog('my_module', $message, array());
// Logs an error
watchdog('my_module', $message, array(), WATCHDOG_ERROR);

Drupal8 Logging API的使用如下:
// Logs a notice
\Drupal::logger('my_module')->notice($message);
// Logs an error
\Drupal::logger('my_module')->error($message);