web-dev-qa-db-ja.com

Symfony2のデフォルトモノローグ用のカスタムモノローグハンドラー

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」が指定されました

新しいモノログサービスを作成せずに、カスタムハンドラーをデフォルトのモノログに追加するにはどうすればよいですか?

20
TroodoN-Mike

これを試して:

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

お役に立てば幸いです。

35
chmeliuk

Monologにはさまざまなハンドラーのセットが付属しているので、独自のハンドラーを作成する代わりに、そのうちの1つを使用することをお勧めします。 logentries.comへのロギングにLogEntriesHandlerを使用していますが、ここに記載されているように、さらにいくつかあります: 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%
7
totas