2012-04-21 3 views
6

Я хочу настроить Symfony2, чтобы отправить мне электронное письмо за ошибки critical, но просто зарегистрировать ошибки error. Будут ли следующие настройки?Symfony2 Monolog Настройки для регистрации электронной почты и файлов

monolog: 
    handlers: 
     main: 
      type:   fingers_crossed 
      action_level: error 
      handler:  grouped 
     grouped: 
      type: group 
      members: [filelog, mail] 
     # log all errors to file 
     filelog: 
      type:   fingers_crossed 
      action_level: error 
      handler:  nested_stream 
     nested_stream: 
      type: stream 
      path: "%kernel.logs_dir%/%kernel.environment%.log" 
      level: debug 
     # send me an email when we have a critical error 
     mail: 
      type:   fingers_crossed 
      action_level: critical 
      handler:  buffered 
     buffered: 
      type: buffer 
      handler: swift 
     swift: 
      type:  swift_mailer 
      from_email: %mailer_sender% 
      to_email: %error_email% 
      subject: "[FeedStream Error]" 
      level:  debug 

Я видел: http://symfony.com/doc/current/cookbook/logging/monolog_email.html Но он не обрабатывает error вообще, что это тот случай, когда я все еще хочу журналов (но не по электронной почте). Я был уверен, что моя конфигурация будет работать, но я не знаю достаточно о настройках монолога. Пожалуйста, дайте мне знать, если это правильно или если есть лучший способ.

+0

Вы получаете электронные письма за исключения? – Sethunath

+2

Обработчики вызываются последовательно в стеке, если вы хотите отправлять критические ошибки по почте, вы можете просто оставить обработчик почты только в стеке с action_level = критический. –

ответ

7

Следующая монологическая конфигурация моего производства. Это подтверждается работой по отправке критических ошибок, а также регистрации «ошибки» и выше в файл. Я также разделил различные каналы для разделения файлов. Другие каналы, похоже, вызывают ошибки намного меньше, чем «запрос», поэтому имеет смысл разделить их на производство для меня. Поймите, это не ваш вопрос, но надеюсь, что это поможет кому-то другому; это может удовлетворить все требования.

monolog: 
    handlers: 
    main: 
     level: error 
     type: stream 
     path: "%kernel.logs_dir%/%kernel.environment%_remaining.log" 
     channels: ["!doctrine", "!request", "!security"] 
    request: 
     type: fingers_crossed 
     handler: requests 
     excluded_404s: 
      - ^/phpmyadmin 
    requests: 
     type: group 
     members: [request_critical, request_error] 
    request_critical: 
     level: critical 
     type: stream 
     path: "%kernel.logs_dir%/%kernel.environment%_request_critical.log" 
     channels: [request] 
    request_error: 
     level: error 
     type: stream 
     path: "%kernel.logs_dir%/%kernel.environment%_request.log" 
     channels: [request] 
    doctrine: 
     level: error 
     type: stream 
     path: "%kernel.logs_dir%/%kernel.environment%_doctrine.log" 
     channels: [doctrine] 
    security: 
     level: error 
     type: stream 
     path: "%kernel.logs_dir%/%kernel.environment%_security.log" 
     channels: [security] 
    mail: 
     type: fingers_crossed 
     action_level: critical 
     handler: buffered 
    buffered: 
     type: buffer 
     handler: swift 
    swift: 
     type: swift_mailer 
     from_email: [email protected] 
     to_email: [email protected] 
     subject: A critical error occurred