我正在研究Symfony 2网络应用程序,我想使用特定 Channels 向服务注入Monolog Logger :
配置:
monolog:
handlers:
main:
type: stream
path: %kernel.root_dir%/%kernel.environment%.log
level: error
#channels: [!alert]
alert:
type: stream
path: %kernel.root_dir%/%kernel.environment%.alert.log
level: info
channels: [alert]
服务配置:
services:
some_service:
class: Some\Service
arguments: [@logger]
tags:
- { name: monolog.logger, channel: alert }
服务:
class SomeService {
protected $logger;
public function __construct($logger) {
$this->logger = $logger;
$this->logger->info('Log this!');
}
prod.log文件:
[2016-03-28 11:25:47] alert.INFO:记录下来!
The Problem: 虽然我使用 alert
通道专门注入 Logger ,但消息由 main
处理程序处理 . 因此,消息将记录到 prod.log
文件而不是 prod.alert.log
文件中 .
当我将 channels: [!alert]
行留作注释时,该消息将记录到 prod.log
. 当我通过删除注释激活此行时,根本不记录消息(主处理程序正确地忽略了通道) .
为了使用特定的处理程序来定位特定的日志文件,邮件程序等,我有什么要做的? alert
通道的消息应由 alert
处理程序处理,而忽略所有其他处理程序 .
1 回答
使用为
Monolog
处理程序创建的特殊服务: