2017-08-02 13 views
0

私は、gelf形式を使ってsymfony 2アプリからgraylog 2サーバにログを流し込みようとしています。次のようにGraylog/Symfony2/Gelf:エラーを無視するようにロガーを設定するには?

私のモノローグ構成が見えます:

monolog: 
    handlers: 
      # --- 8< --- 
      # ... 
      # --- >8 --- 
      graylog: 
       type: gelf 
       publisher: 
        hostname: my-graylog-server.com 
        port: 12201 
       level: debug 
       formatter: app.gelf_formatter 

graylogサーバーが使用できない場合、私は(当然)接続を取得内部サーバーエラーになりエラー

[2017-07-28 16:03:25] app.ERROR: Failed to write to socket: fwrite(): send of 153 bytes failed with errno=111 Connection refused (8) [] [] 

を(拒否しましたログの原因となった要求に対する応答コードは500です)。

GELF-PHPはIngoreErrorTransportLoggerを提供し、この正確な目的のために建てるのようだ:

Prevent Internal Server Error with Symfony 2/Monolog on failed gelf connectionもこの質問を参照してください)。

これをSymfonyのモノログ設定でどのように設定できますか?

答えて

0

symfonyには、WhatFailureGroupハンドララッパーがあります。ラップするすべてのログハンドラのログからエラーを無視するハンドラです。

私たちの設定はこのようになりました。ロギング中にエラーがなくなりました(おそらく理想的ではありませんが、ロギング中にエラーが発生したために完全に失敗するよりも良いでしょう)。

monolog: 
    handlers: 
      main: 
       type:   fingers_crossed 
       action_level: warning 
       handler:  grouped 
      grouped: 
       type:   whatfailuregroup 
       members:  [file, graylog] 
      file: 
       type:   stream 
       path:   "%kernel.logs_dir%/%kernel.environment%.log" 
       level:  debug 
      graylog: 
       type: gelf 
       publisher: 
        hostname: my-graylog-server.com 
        port: 12201 
       level: debug 
       formatter: app.gelf_formatter 

基本的に我々はtype: whatfailuregrouptype: groupを置き換えます。

関連する問題