Symfony 2中默认monolog的自定义monolog处理程序

时间:2012-10-17 13:55:04

标签: php symfony monolog

我想将自定义处理程序添加到Symfony 2中的默认monolog。

在我的config.yaml文件中,我有:

monolog:
    handlers:
        main:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: debug
        myHandler:
            type:  Acme\MyBundle\Monolog\MyCustomHandler
            level: error

我的课程如下:

// Acme\MyBundle\Monolog\MyCustomHandler
use Monolog\Logger;
use Monolog\Handler\SocketHandler;
use Monolog\Formatter\LineFormatter;

class MyCustomHandler extends AbstractProcessingHandler
{
    ...
}

但即使在我上课之前,我也会收到错误:

  

为处理程序“myHandler”提供的无效处理程序类型“acme \ mybundle \ monolog \ mycustomhandler”

如何在不创建新的monolog服务的情况下将自定义处理程序添加到默认的monolog?

2 个答案:

答案 0 :(得分:33)

试试这个:

monolog:
    handlers:
        main:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: debug
        custom:
            type: service
            id: my_custom_handler

services:
    my_custom_handler:
        class: Acme\MyBundle\Monolog\MyCustomHandler

如果你想将它用作默认处理程序,那么你应该改变我上面写的一点monolog部分。

monolog:
    handlers:
        main:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: debug
            handler: custom
        custom:
            type: service
            id: my_custom_handler

我希望它可以帮到你。

答案 1 :(得分:7)

我刚刚发现Monolog附带了一组各种处理程序,因此您可能想要使用其中一种而不是编写自己的处理程序。我使用LogEntriesHandler来登录logentries.com,但还有一些内容记录在此:https://github.com/Seldaek/monolog#log-specific-servers-and-networked-logging

我的Symfony2配置如下:

monolog:
    main:
        type:  fingers_crossed
        level: debug
        handler: nested
    custom:
        type: service
        id: monolog.handler.logentries
        level: error

services:
    monolog.handler.logentries:
        class: Monolog\Handler\LogEntriesHandler
        arguments:
            token: %logentries_token%