ホームページ  >  記事  >  データベース  >  PHP エラーをログ ファイルではなくデータベースに保存できますか?

PHP エラーをログ ファイルではなくデータベースに保存できますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-06 03:05:02688ブラウズ

Can You Store PHP Errors in a Database Instead of a Log File?

PHP エラーはエラー ログ ファイルではなくデータベースに書き込むことができますか?

PHP エラーは通常、標準の error_log ファイルに記録されます。しかし、追跡と分析を容易にするために、代わりにデータベースに保存することが望ましい場合があります。これはカスタム エラー ハンドラーを作成せずに直接可能ではありませんが、単一のグローバルな変更で実現できます。

カスタム エラー ハンドラーの実装

制御の鍵エラーを処理する方法は、カスタム エラー ハンドラーを作成することです。これは、コールバック関数を引数として受け取る set_error_handler() 関数を使用して実行できます。コールバック関数には次のシグネチャが必要です:

function error_handler($errno, $errstr, $errfile, $errline) {}

コールバック関数内で、データベースにログを記録するかどうかなど、各エラーの処理方法を決定できます。

MySQL へのエラーログの例

次のコードは、PHP エラーをログに記録するカスタム エラー ハンドラーの例を示しています。 MySQL データベース:

function myErrorHandler($errno, $errstr, $errfile, $errline)
{
    // Establish connection to MySQL database
    $conn = mysqli_connect("hostname", "username", "password", "database");

    // Prepare SQL query to log error
    $query = "INSERT INTO error_log (number, string, file, line) VALUES (?, ?, ?, ?)";
    $stmt = mysqli_prepare($conn, $query);

    // Bind parameters to SQL query
    mysqli_stmt_bind_param($stmt, "isss", $errno, $errstr, $errfile, $errline);

    // Execute SQL query to log error
    mysqli_stmt_execute($stmt);

    // Close database connection
    mysqli_close($conn);

    // Don't execute PHP internal error handler
    return true;
}

// Set user-defined error handler
$old_error_handler = set_error_handler("myErrorHandler");

ユーザー定義のエラー ハンドラーを設定すると、MySQL データベースへのログ記録など、すべての PHP エラーがカスタム エラー処理ロジックを通じてルーティングされます。

以上がPHP エラーをログ ファイルではなくデータベースに保存できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。