2012-04-21 7 views
6

Chcę skonfigurować Symfony2, aby wysłać do mnie wiadomość e-mail z błędami critical, ale po prostu zaloguj się błędy poziomu error. Czy to zrobią następujące ustawienia?Symfony2 Monolog Ustawienia poczty e-mail i rejestrowanie plików

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 

widziałem: http://symfony.com/doc/current/cookbook/logging/monolog_email.html Ale to nie obsługuje error w ogóle, co jest przypadek, w którym wciąż chcę dzienniki (ale nie e-mail). Byłem pewien, że moja konfiguracja zadziała, ale nie wiem wystarczająco dużo o ustawieniach monologu. Proszę dać mi znać, jeśli jest to poprawne lub istnieje lepszy sposób.

+0

Czy otrzymujesz wiadomości e-mail o wyjątkach? – Sethunath

+2

Handlery są wywoływane sukcesywnie w stosie, jeśli chcesz wysyłać błędy krytyczne, możesz po prostu pozostawić obsługę poczty w samym stosie z action_level = critical. –

Odpowiedz

7

Oto moja konfiguracja monologi produkcyjnych. Potwierdza to pracę przy wysyłaniu krytycznych błędów, podczas rejestrowania "poziomu błędu" i powyżej do pliku. Rozdzieliłem także różne kanały do ​​oddzielnych plików. Inne kanały wydają się generować błędy znacznie mniej niż "żądanie", więc sensowne jest rozdzielenie ich na produkcję dla mnie. Uświadom sobie, że to nie jest twoje pytanie, ale mam nadzieję, że pomoże to komuś innemu; może to być dostosowane do większości wymagań.

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 
Powiązane problemy