0

必要なことを行うために symfony アプリでログを構成する方法を理解するのに苦労しています。ハンドラーとチャネルの違い/関係がわかりません。私は私の中に次のものを持っていますconfig.yml

monolog:
    handlers:
        main:
            type: fingers_crossed
            action_level: error
            handler: nested
        nested:
            type:  stream
            path:  "%kernel.logs_dir%/%kernel.environment%.log"
        dynamic_request:
            type:  stream
            path:  "%kernel.logs_dir%/%kernel.environment%_dynamic.log"
            level: debug

次に、これを私のservices.yml

jsonstub.dynamic.response_provider:
    class: ProgrammingAreHard\JsonStub\CoreBundle\Domain\Dynamic\EventListener\DynamicResponseProvider
    arguments:
        - @security.context
        - @logger
        - %kernel.environment%
    tags:
        - { name: kernel.event_listener, event: security.interactive_login, method: onAuthentication }
        - { name: monolog.logger, channel: dynamic_request }

望ましい動作は、ログのみ errorがログに記録されることであり、そのログに%kernel.logs_dir%/%kernel.environment%.logロガーを挿入したいと考えています。ドキュメントは私を混乱させます。次のように述べています。DynamicResponseProvider%kernel.logs_dir%/%kernel.environment%_dynamic.log

configuration defines a stack of handlers which will be called in the order where they are defined

これは、dynamic_requestハンドラーが定義されているためデバッグ ログがここに記録されるということですか? それは私の望ましい行動ではありません。私が望むのは、DynamicResponseProviderそのハンドラーのみを使用することです。どうすればこれを達成できますか?

4

1 に答える 1

1

ハンドラのチャネルを指定できます。したがって、「dynamic_request」ハンドラーを「dynamic_request」ログにのみ使用する場合は、config.yml を次のようにする必要があります。

  dynamic_request:
        type:  stream
        path:  "%kernel.logs_dir%/%kernel.environment%_dynamic.log"
        level: debug
        channels: dynamic_request

See http://symfony.com/doc/current/cookbook/logging/channels_handlers.html for more example

于 2014-09-17T07:15:53.910 に答える