2012-04-21 22 views
6

Tôi muốn thiết lập Symfony2 để gửi cho tôi một email có lỗi critical, nhưng chỉ cần ghi lỗi mức error. Các cài đặt sau có thực hiện điều đó không?Cài đặt Monolog Symfony2 để ghi nhật ký email và tệp

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 

tôi thấy: http://symfony.com/doc/current/cookbook/logging/monolog_email.html Nhưng nó không xử lý error ở tất cả, mà là một trường hợp tôi vẫn muốn ghi (nhưng không có email). Tôi đã khá chắc chắn cấu hình của tôi sẽ làm việc, nhưng tôi không biết đủ về các thiết lập monolog. Xin vui lòng cho tôi biết nếu điều này là chính xác hoặc nếu có một cách tốt hơn.

+0

bạn có nhận được email ngoại lệ không? – Sethunath

+2

Trình xử lý được gọi liên tục trong ngăn xếp, nếu bạn muốn gửi các lỗi nghiêm trọng, bạn chỉ có thể để trình xử lý thư trong ngăn xếp một mình với action_level = critical. –

Trả lời

7

Sau đây là cấu hình monolog sản xuất của tôi. Điều này được xác nhận làm việc gửi các lỗi nghiêm trọng, trong khi ghi nhật ký 'lỗi' và ở trên để nộp. Tôi cũng đã tách ra các kênh khác nhau để tách các tệp. Các kênh khác dường như tạo ra lỗi ít hơn 'yêu cầu', do đó, nó có ý nghĩa để tách chúng ra trong sản xuất cho tôi. Nhận ra đó không phải là câu hỏi của bạn, nhưng hy vọng nó sẽ giúp người khác; điều này có thể lùi lại để phù hợp với hầu hết các yêu cầu.

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 
Các vấn đề liên quan