Symfony2: использовать процессоры при входе в разные файлы
Я хочу записать свои журналы приложений в другой файл, чем тот, который Symfony2 записывает в свои собственные журналы и системные журналы. Я понял, что мне нужно создать собственный сервис, подобный этому:
services:
actionslogger:
class: Symfony\Bridge\Monolog\Logger
arguments: [app]
calls:
- [pushHandler, [@actionslogger_handler]]
actionslogger_handler:
class: Monolog\Handler\StreamHandler
arguments: [%kernel.logs_dir%/actions_%kernel.environment%.log, 200]
Это прекрасно работает, когда я использую$logger = $this->get('actionslogger'); в моей заявке, так что все в порядке. Но я также хочу использовать Formatter и Processor для управления тем, как пишутся мои журналы. Для этого я использую эту конфигурацию:
services:
actionslogger.formatter.session_request:
class: Monolog\Formatter\LineFormatter
arguments:
- "[%%datetime%%] [%%extra.token%%] %%channel%%.%%level_name%%: %%message%%\n"
actionslogger.processor.session_request:
class: My\Bundle\LogProcessor
arguments: [ @session ]
tags:
- { name: actionslogger.processor, method: processRecord }
Я могу использовать этот Форматтер и Процессор с регистратором по умолчанию Symfony2 с этим config:
monolog:
handlers:
main:
type: stream
path: %kernel.logs_dir%/%kernel.environment%.log
level: debug
formatter: actionslogger.formatter.session_request
Но если я могу использовать Formatter со своим собственным регистратором, я не могу использовать процессор. Вот мой конфиг:
services:
actionslogger.formatter.session_request:
class: Monolog\Formatter\LineFormatter
arguments:
- "[%%datetime%%] [%%extra.token%%] %%channel%%.%%level_name%%: %%message%%\n"
actionslogger.processor.session_request:
class: My\Bundle\LogProcessor
arguments: [ @session ]
tags:
- { name: actionslogger.processor, channel: app, method: processRecord, handler: @actionslogger_handler }
actionslogger:
class: Symfony\Bridge\Monolog\Logger
arguments: [app]
calls:
- [pushHandler, [@actionslogger_handler]]
actionslogger_handler:
class: Monolog\Handler\StreamHandler
arguments: [%kernel.logs_dir%/actions_%kernel.environment%.log, 200]
calls:
#- [pushProcessor, [???]]
- [setFormatter, [@actionslogger.formatter.session_request]]
Тэги канала и обработчика в конфигурации процессора кажутся бесполезными.
Что я могу сделать, чтобы процессор работал с моим регистратором? Что я должен передать методу pushProcessor в закомментированной строке (если это может быть допустимым вариантом)?
Спасибо за помощь.
Примечание: использование Symfony 2.0.0