首页 > 解决方案 > 如何控制 Drupal 8 monolog dblog 日志级别

问题描述

我将 Drupal 8 与 Monolog 模块 (1.3) 一起用于外部日志支持和 Sentry 日志记录,同时保留核心数据库日志记录 (dblog/watchdog)。这一切都有效,除了我找不到控制看门狗日志记录级别的方法(所以我在生产环境中得到了很多调试日志记录)。

这是我的独白配置(monolog.services.yml):

parameters:
  monolog.channel_handlers:
    default: ['drupal.dblog', 'drupal.raven']
    custom1: ['rotating_file_custom1']
    custom2: ['rotating_file_custom2']
    custom3: ['rotating_file_custom3']
services:
  monolog.handler.rotating_file_custom1:
    class: Monolog\Handler\RotatingFileHandler
    arguments: ['file://../logs/custom1.log', 25, 'monolog.level.debug']
  monolog.handler.rotating_file_custom2:
    class: Monolog\Handler\RotatingFileHandler
    arguments: ['file://../logs/custom2.log', 25, 'monolog.level.debug']
  monolog.handler.rotating_file_custom3:
    class: Monolog\Handler\RotatingFileHandler
    arguments: ['file://../logs/custom3.log', 25, 'monolog.level.debug' ]

我尝试使用 DrupalHandler 为 drupal.dblog 添加一个新的服务处理程序,但我不知道要使用哪些参数(参数是必需的,它期望 LoggerInterface 实现作为第一个参数)。

我已经阅读了模块文档,但它几乎只关注文件/外部日志记录。

有什么建议么?

TIA

标签: drupal-8monolog

解决方案


我也试图做到这一点,但我也不清楚。解决方案是使用“@”符号作为第一个参数添加核心 dblog 服务。还应该提到的是,日志级别记录为“monolog.level.debug”,但应该在没有前缀“monolog.level”的情况下实现。因为独白参数没有按应有的方式正确加载。这是一个工作示例:

parameters:
  monolog.channel_handlers:
    default: ['rotating_file_handler', 'db_warning_handler']
    locale: ['null']
  monolog.processors: ['message_placeholder', 'current_user', 'request_uri', 'ip', 'referer', 'memory_usage']

services:
  monolog.handler.db_warning_handler:
    class: Drupal\monolog\Logger\Handler\DrupalHandler
    arguments: ['@logger.dblog', 'warning']
  monolog.handler.rotating_file_handler:
    class: Monolog\Handler\RotatingFileHandler
    arguments: ['private://logs/debug.log', 30, 'debug']

推荐阅读