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

2022-08-30 18:57:38

我想在Symfony 2中的默认独白中添加一个自定义处理程序。

在我的文件中,我有: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”

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


答案 1

试试这个:

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:
    handlers:
        main:
            type:  stream
            path:  %kernel.logs_dir%/%kernel.environment%.log
            level: debug
            handler: custom
        custom:
            type: service
            id: my_custom_handler

我希望它能帮助你。


答案 2

我刚刚发现,船上有一组不同的处理程序,所以你可能想使用其中一个,而不是写你自己的。我正在使用用于日志记录来 logentries.com 但这里还有一些记录:https://github.com/Seldaek/monolog#log-specific-servers-and-networked-loggingMonologLogEntriesHandler

我的 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%

推荐