2017-07-28 8 views
2

symfony 2アプリからgelfフォーマットを使用して、グラリログ2サーバにログをストリーミングしようとしています。次のようにSymfony 2/Monologで内部サーバエラーが発生し、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です)。

このエラーをキャッチする最も良い方法は何ですか?エラーログを持っているのは当然ですが、外部ログ処理サーバーが利用できないときにエラーが発生することはありませんか?

答えて

1

アプリケーションサーバーに要求を転送するために、ローカルキャッシュメカニズムを使用することをお勧めします。このようにして、ログサーバーの瞬間的なダウンタイムが発生した場合、要求をキューに入れることができます。 fluentdのようなシステムは、このためにうまく機能します。一方、あなたがログメッセージを失うことを気にしないならば、あなたは、このようなIgnoreErrorTransportWrapperなどのエラーを無視する交通に見ることができます。

https://github.com/bzikarsky/gelf-php/blob/master/src/Gelf/Transport/IgnoreErrorTransportWrapper.php

さらに読書:

https://github.com/bzikarsky/gelf-php/issues/56

+0

こんにちは!速い返答をありがとう。 IgnoreErrorTransportラッパーは私が探しているものです(少なくとも今のところは)。 symfonyの設定でどのように指定できるか知っていますか? – Paul

+0

申し訳ありません - 手がかりはありません。私は3年後にsymfonyをやっていません。 :-P – PressingOnAlways

+0

OK、とにかく、私はそれを見つけることができるはずです;) – Paul

関連する問題