2009-04-04 9 views
4

PHPで集中管理された方法でエラー報告を処理する方法はありますか?私は電子メールで私のアプリケーションによって提起されたすべてのエラーを通知されたいと思います。PHPで集中管理されたエラー報告

アプリケーション全体でこれを達成する最も良い方法は何ですか?

おかげ

答えて

6

Kaliumが言及したように、あなたはset_error_handlerを使用したいと思うでしょうが、それだけであなたの一部を得ることができます。また、キャッチされない例外をトラップする必要があります。そのためには、set_exception_handlerを使用してください。

私が自分で行っているのは、コードトラップエラーがあり、そのエラーを私が他の場所でキャッチできる例外を適切に変換することです。キャッチされていないものについては、デフォルトの例外ハンドラを使用してログとレポートを作成し、必要に応じて適切なエラーを表示します。

8

あなたは、実行時に、あなたが好きなようにエラーを処理するためにset_error_handlerを使用することができます。

4

エラーの3種類があります、このような警告やPHPによって発生した致命的なエラーとして

  1. システムエラーは、。 404エラーもこのカテゴリに含まれます。

  2. 不正な、または失敗したクエリまたはデータベース接続によるデータベースエラー。

  3. サーバーやデータベースに関係のないアプリケーションの内部作業で問題が発生した場合などの論理エラー。たとえば、特定のファイルが特定のフォルダに存在すると想定していたが、そうでないと考えた場合。

エラーの3種類すべてを処理するErrorHandlerクラスを作成する最適な方法。システムエラーの場合は、set_error_handlerを使用するか、this oneなどのオンラインチュートリアルの1つを読んでください。

データベースの場合、すべてのクエリを処理する集中データベースクラスを使用することをお勧めします。このようなものに使用:論理エラーのために

$result=mysql_query($sql); 
if (! $result) 
{ 
    $ErrorHandler->dbError(mysql_error(), $sql); 
} 

、こうした期待されるファイルやデータベースレコードが見つからないの誤差などを、あなたは同じErrorHandlerのクラスを呼び出すと同じような何かをするだろう:

if ($logicalError) 
{ 
    $ErrorHandler->appError('Something bad happened',__LINE__, __FILE__); 
    $ErrorHandler->showAppErrorPage(); 
} 

ここでは、__FILE____LINE__の定数は、このエラーが発生した場所を正確に示します。 php.netサイトでそれらを読んでください。

あなたのErrorHandlerクラスはすべてのエラーをログファイルに記録したり、あなたにメールしたり、あなたの携帯電話のSMS /テキストに記録することができます。また、ユーザーをエラーページにリダイレクトするために使用することもできます。

関連する問題