2012-04-21 14 views
6

Quiero configurar Symfony2 para que me envíe un correo electrónico para critical errores, pero simplemente inicie sesión error nivel de errores. ¿Los siguientes ajustes harán eso?Symfony2 Configuración de Monolog para correo electrónico y registro de archivos

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 

vi: http://symfony.com/doc/current/cookbook/logging/monolog_email.html Pero no maneja error en absoluto, que es un caso en el que todavía quiero registros (pero no de correo electrónico). Estaba bastante seguro de que mi configuración funcionaría, pero no sé lo suficiente sobre la configuración del monólogo. Por favor, avíseme si esto es correcto o si hay una mejor manera.

+0

¿Recibirá correos electrónicos con excepciones? – Sethunath

+2

Los manipuladores se llaman sucesivamente en la pila, si desea enviar errores críticos por correo, simplemente puede dejar el controlador de correo solo en la pila con action_level = critical. –

Respuesta

7

La siguiente es mi configuración de monólogo de producción. Esto se confirma al enviar errores críticos, mientras se registra el nivel de "error" y más arriba en el archivo. También he dividido los diferentes canales para separar los archivos. Los otros canales parecen producir errores mucho menores que 'solicitud', por lo que tiene sentido dividirlos en producción para mí. Tenga en cuenta que esa no es su pregunta, pero espero que ayude a otra persona; esto puede reducirse para adaptarse a la mayoría de los requisitos.

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 
Cuestiones relacionadas