Мне трудно понять, как настроить ведение журнала в моем приложении 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
будет использовать этот обработчик. Как я могу достичь этого?
Вы можете указать канал для обработчика.
Итак, если вы хотите, чтобы обработчик dynamic_request использовался только для журналов dynamic_request, ваш config.yml должен быть:
dynamic_request:
type: stream
path: "%kernel.logs_dir%/%kernel.environment%_dynamic.log"level: debug
channels: dynamic_request
Увидеть http://symfony.com/doc/current/cookbook/logging/channels_handlers.html для большего примера
Других решений пока нет …