現在の位置: ホーム> 最新記事一覧> getTraceAsStringを使用してPHPでカスタムロギング機能を作成する方法

getTraceAsStringを使用してPHPでカスタムロギング機能を作成する方法

gitbox 2025-06-03

PHP開発では、エラーログは、プログラムの安定性を確保し、問題の問題をトラブルシューティングするための重要な手段です。 PHPにはERROR_LOGSET_ERROR_HANDLERなどのメカニズムが付属していますが、特にSTACK TRACE情報に関しては、エラーメッセージの出力形式をカスタマイズできる場合があります。例外クラスのgetTraceAsString()メソッドは、この目標を達成するのに役立ちます。

GetTraceAsstringとは何ですか?

GetTraceAsString()は、PHPの例外クラスの方法であり、例外のスタックトレース情報の文字列表現を返すために使用されます。この文字列には、関数呼び出しの順序、ファイル名、および対応する行番号が含まれています。これは、ロギングに非常に適しています。

出力の例は次のとおりです。

 #0 /var/www/html/index.php(10): someFunction()
#1 {main}

カスタムエラーロギングの基本構造

エラーメッセージをフォーマットして、例外をキャッチし( try ... catch )、 getTraceAsString()を呼び出すことにより、ログファイルに書き込むことができます。ここに完全な例があります:

<code>&lt;?php

function logerrortofile(例外$ e){
$ logfile = dir 。 '/error.log';
$ logmessage = "["。日付( 'ymd h:i:s')。 "]";
$ logmessage。= "error:"。 $ e-> getMessage()。 php_eol;
$ logmessage。= "in file:"。 $ e-> getFile()。 「オンライン」。 $ e-> getLine()。 php_eol;
$ logmessage。= "Stack Trace:"。 php_eol。 $ e-> getTraceAsString()。 php_eol;
$ logmessage。= str_repeat( " - "、80)。 php_eol;

 file_put_contents($logFile, $logMessage, FILE_APPEND);

}

関数除算($ a、$ b){
if($ b === 0){
新しい例外をスローします(「除数は0になりません」);
}
$ a / $ bを返します。
}

試す {
$ result = divide(10、0);
} catch(例外$ e){
logerrortofile($ e);
エコー「エラーが発生しました。ログファイルを表示してください。」 。 php_eol;
}
</code>

ログリモートエラーログ

統一された管理のために、リモートサーバーにエラーログを送信する場合があります。この場合、 file_get_contentsまたはcurlを使用して、ログ情報をリモートインターフェイスにプッシュできます。たとえば、:

<code> function senderrortoremote(例外$ e){$ log = ['time' =&gt; date( 'ymd h:i:s')、 'message' =&gt; $ e-&gt; getmessage()、 'file' =&gt; $ e-&gt; getFile()、 'line' =&gt; $ e-&gt; getline()、 'trace' =&gt; $ e-&gt; getTraceAsstring()];
 $json = json_encode($log);

$ch = curl_init('https://gitbox.net/api/error-report');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);

}
</code>

実用的な提案

  1. ログ回転:ログファイルが無限に増加しないことを確認してください。 Logrotateツールを組み合わせるか、PHPでファイルサイズのチェックを設定できます。

  2. エラーレベルの区別:異なる重大度レベルのログは、例外タイプまたはカスタムレベルに基づいて記録されます。

  3. セキュリティ:データベースパスワードやユーザープライバシーデータなどの機密情報の記録は避けてください。

要約します

getTraceAsString()を使用して、例外通話スタック情報を読み取り可能な文字列にすばやく変換し、カスタムロギング関数と組み合わせて柔軟なエラーロギングメカニズムを実装できます。これは、ローカルのデバッグを容易にするだけでなく、リモート監視とアラームのニーズを満たしています。 PHPが提供する例外処理メカニズムの柔軟な使用は、プロジェクトの安定性を護衛します。