esolitos / monolog
一个用于集成 Monolog 库的框架和 UI。
Requires
- monolog/monolog: >=1.6.0,<2.0.0
This package is auto-updated.
Last update: 2021-03-26 13:16:58 UTC
README
概述
此模块将 Drupal 与 Seldaek 的出色 Monolog 库 集成,以提供更好的日志记录解决方案。使用此模块的一些好处如下
- 可配置的日志级别
- 众多处理器
- Monolog 的全部功能和灵活性
Drupal Monolog 模块还完全集成了 watchdog,因此无需额外配置即可与核心和贡献模块一起使用。
Monolog 将您的日志发送到文件、套接字、收件箱、数据库和各种网络服务。此模块是 Monolog 库与 Drupal 日志系统集成的薄包装器。有关 Monolog 库本身的工作方式的更多信息,请参阅文档。
安装
Monolog 模块需要通过 Composer 安装,这将下载所需的库。有关更多信息,请参阅使用 Composer 与 Drupal。
快速入门
Monolog 模块没有 UI,所有配置都在服务文件中完成。
您应在 settings.php 所在文件夹中创建一个特定于站点的 services.yml(例如 monolog.services.yml),然后将此行添加到 settings.php 中
$settings['container_yamls'][] = 'sites/default/monolog.services.yml';
允许 Monolog 将日志记录到旋转文件的简单配置可能是
parameters:
monolog.channel_handlers:
default: ['rotating_file']
monolog.processors: ['message_placeholder', 'current_user', 'request_uri', 'ip', 'referer']
services:
monolog.handler.rotating_file:
class: Monolog\Handler\RotatingFileHandler
arguments: ['private://logs/debug.log', 10, 'monolog.level.debug']
此配置将记录所有大于(或等于)debug 日志级别的消息,并将它们记录到名为 debug.log 的文件中,该文件位于您的私有文件系统中的 logs 文件夹中。文件将每天轮换,最多保留 10 个文件。
工作原理
处理器
处理器作为服务注册在 Drupal 服务容器 中。您可以定义您需要的任何数量的处理器。每个处理器都有一个名称(应在 monolog.handler. 命名空间下),一个实现类和一系列参数。
通过定义参数在日志记录器通道和 Monolog 处理器之间进行映射。在 monolog.channel_handlers 参数下,可以定义从特定通道发送日志的位置。default 映射应作为后备选项存在。在先前的示例中,所有日志都将发送到 monolog.handler.rotating_file 处理器(注意,只使用处理器名称,而不是完整的服务名称)。
以下示例将所有 PHP 特定的日志发送到单独的文件
parameters:
monolog.channel_handlers:
php: ['rotating_file_php']
default: ['rotating_file_all']
monolog.processors: ['message_placeholder', 'current_user', 'request_uri', 'ip', 'referer']
services:
monolog.handler.rotating_file_php:
class: Monolog\Handler\RotatingFileHandler
arguments: ['private://logs/php.log', 10, 'monolog.level.debug']
monolog.handler.rotating_file_all:
class: Monolog\Handler\RotatingFileHandler
arguments: ['private://logs/debug.log', 10, 'monolog.level.debug']
以下方法
\Drupal::logger('php')->debug('debug message');
将写入相应的消息到 private://logs/php.log 文件。
处理器
Monolog 可以使用 处理器 修改写入日志工具的消息。该模块提供一组已定义的处理器,用于添加当前用户、请求 URI、客户端 IP 等信息。
处理器被定义为 monolog.processor. 命名空间下的服务。我们建议您使用 Devel 模块 或 Drupal Console 来查找所有处理器。
数据库日志
Monolog 模块自动为每个启用的 Drupal 日志器注册一个处理器。要记录到标准的 watchdog 表,您可以启用数据库日志模块并使用 drupal.dblog 作为处理器。
示例
- RotatingFileHandler:记录到文件系统
monolog.handler.rotating_file_debug:
class: Monolog\Handler\RotatingFileHandler
arguments: ['public://logs/debug.log', 10, 'monolog.level.debug']
- SlackHandler:记录到 Slack 频道
monolog.handler.slack:
class: Monolog\Handler\SlackHandler
arguments: ['slack-token', 'monolog', 'Drupal', true, null, 'monolog.level.error']
monolog.handler.fg:
class: Monolog\Handler\FingersCrossedHandler
arguments: ['@monolog.handler.slack', null, 100]
您可以在 这里 找到处理器/处理器的完整列表。
扩展 Monolog
处理器和处理器是 Drupal/Symfony 服务。您可以使用 Drupal 8 OOP 标准方法来定义新的或修改现有的处理器。