2012-04-21 53 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可言,這是我還是想記錄(但沒有電子郵件)的情況下。我很確定我的配置可以工作,但我對monolog設置不夠了解。請讓我知道這是否正確或者是否有更好的方法。

+0

你會收到異常電子郵件嗎? – Sethunath 2012-04-22 17:41:14

+2

處理程序在堆棧中被連續調用,如果您想要發送嚴重錯誤,則可以僅使用action_level = critical將郵件處理程序保留在堆棧中。 – 2012-06-12 18:28:57

回答

7

以下是我的產品monolog配置。這被證實可以發送嚴重錯誤,同時記錄「錯誤」等級和以上。我還分出了不同的渠道來分開文件。其他頻道似乎產生的誤差遠遠小於'請求',所以將它們分割出來用於我是有意義的。意識到這不是你的問題,但希望它能幫助別人;這可以削減以適應大多數要求。

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