Пользовательский монолог-обработчик для монолога по умолчанию в Symfony 2
Я хочу добавить пользовательский обработчик к монологу по умолчанию в 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
{
...
}
Но даже до заполнения моего класса я получаю сообщение об ошибке:
недействительный тип обработчика "acme\mybundle\monolog\mycustomhandler" для обработчика "myHandler"
Как добавить пользовательский обработчик к монологу по умолчанию, не создавая новую службу монологи?
Ответы
Ответ 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
Я только узнал, что Monolog
поставляется с набором различных обработчиков, поэтому вы можете использовать один из них вместо того, чтобы писать свои собственные. Я использую LogEntriesHandler
для входа в logentries.com, но есть еще несколько, как описано здесь: https://github.com/Seldaek/monolog#log-specific-servers-and-networked-logging
Конфигурация My 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%