2012-01-07 16 views
0

私は、error_logを大量に呼び出す大規模なエンタープライズ規模のPHPアプリケーションを持っています。PHPのログ、エラーログ、およびカスタマイズ

私は、例外がスローされると、エラーログがディスクをいっぱいにしてサーバーの問題を引き起こすと思います。

私のロギングユーティリティをPHPでうまく利用するにはどうすればよいですか?特に私はPHPのerror_log functionalithが実際の世界でどのように管理され、使われているかについてはあまり知らない。

他のロギングメカニズムが適切ですか? info_logやログ有効期限ユーティリティのように、ログファイルが大きすぎると削除/回転させるのと同じですか?最後に、複数のログファイルを作成できますか?

+2

あなたのPHPに問題を解決するのが最善の方法でしょうか? – ZeroSuf3r

+0

いいえ - すべての問題が修正されたことを確認する方法がないためです。優先順位の低い反復的なエラーログは、サーバーが生き続ける能力を妨げてはなりません。 – jayunit100

+0

ログ・ローテータの仕事のように聞こえます。 – hakre

答えて

1

私の意見では、error_logは十分であり、十分な機能を提供しています。はい、あなたが複数のログファイルを持つことができ、あなたはちょうどそれらを管理する必要があります:) たとえば、あなたがこのようなものを使用することができます。

ini_set('error_log','my_error_file.log'); 

と自動削除の事については、私はerror_logにを使用してのも利点がないと思いますあなたが本当に自動削除をしたい場合。 php.iniのerror_reportingを使ってどこかにダンプするか、ログオフ/最小限にするだけです。

最後に、独自のロギングクラスを書くことができます。これは非常に簡単で素晴らしいソリューションです。非常に短いコードスニペットであり、あなたの意志に従って実際に動作することができます。私は通常同じことをします。 ありがとう:)

+0

info_logはありますか? – jayunit100

+0

そのようなものは何もありませんが、syslog機能がありますが、それは有用ではありませんでした。システムログメッセージを生成します。 –

3

まず、すべてのエラーを記録する必要はありません。ソフトウェア内でエラーを解決できる場合(その90%が存在し、残りの50%[Russorry:P]は存在しないはずです)。入力エラーに関連する小さな部分だけが存在する必要があり、それらはとにかくログに記録すべきではありません。

エラーに頼る代わりに例外を使用します。例外は処理することができ、実行できないときはスクリプトを停止します。より多くのタイプの例外(InvalidArgumentExceptionMathExceptionLoggedErrorException)を許可するためにExceptionクラスを拡張すると、30個のException typesライブラリ全体を作成しました。ただあなたを確認してくださいdo it right!

それ以外の場合、error_logは多くの詳細をログに記録し、例外を使用して、必要なログを記録できます。 Filesystem Functionsを参照してください。

+0

例外についての部分は良いです。 。しかし、....私はソーシャルサイトとの長いストリーミングHTTPストリーミング接続を持っているので、割り込みは期待されています...あなたが暗示するように、それはまったく黒と白ではありません。 – jayunit100

+0

この場合、割り込みは**例外的な**なので、** Exception **をスローして処理して(ログする)、クラスを 'HTTPStreamingException'に拡張して区別することができます。他の例外は異なるハンドラを取得します)。 –

関連する問題