2011-08-16 17 views
1

404エラーが発生したときにメールをログ/受信できる必要があります。私はどのようにこれらのエラーの新しいテンプレートを設定するドキュメントで見ることができますが、私はロギング/電子メールのロジックを実装することができるように私のコントローラの最初の場所でそれらをキャッチしますか?Symfony2ロギング404エラー

答えて

1

kernel.exceptionイベントをリッスンするイベントリスナーを追加するといいでしょうか? はhttp://symfony.com/doc/current/reference/dic_tags.html#dic-tags-kernel-event-listener

少し例とともにhttp://symfony.com/doc/current/book/internals.html#kernel-exception-eventチェックアウト:

1)カスタムリスナー

//bundles/Acme/AcmeBundle/Listener/CustomListener.php 

namespace Acme\AcmeBundle\Listener; 
use Symfony\Component\EventDispatcher\Event; 

public class CustomListener { 
    public function onKernelException(Event $event) { 
     //Get hold of the exception 
     $exception = $event->getException(); 
     //Do the logging 
     // ... 
    } 
} 

2を作成します)ホールドを取得するには、あなたの設定に

//config.yml 
services: 
    kernel.listener.your_listener_name: 
     class: Acme\AcmeBundle\Listener\CustomListener 
     tags: 
      - { name: kernel.event_listener, event: kernel.exception, method: onKernelException } 

をリスナーを追加します。 (Swiftmailer)のサービスのうち、リスナーにそれらを注入することを検討するかもしれません(http://symfony.com/doc/cur rent/book/service_container.html#referencing-injecting-services)

+0

これは私が終わったルートです。今すぐサービスインジェクションピースを理解する必要があります。私は具体的なイベントタイプとしてGetResponseForExceptionEventを使用しています - これは正しいものですか? –

+1

'GetResponseForExceptionEvent'は例外のために使用する必要があります。エラーが '404'であるかどうかを確認することをおすすめしますか?それ以外の場合は、__all__例外が郵送されます(必要な場合は、Monolog設定を使用できます)。 –