Heim > Datenbank > MySQL-Tutorial > Hauptteil

Können Sie PHP-Fehler in einer Datenbank statt in einer Protokolldatei speichern?

Barbara Streisand
Freigeben: 2024-11-06 03:05:02
Original
748 Leute haben es durchsucht

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

Können PHP-Fehler in eine Datenbank statt in eine Fehlerprotokolldatei geschrieben werden?

PHP-Fehler werden normalerweise in der Standarddatei „error_log“ protokolliert. Zur einfacheren Verfolgung und Analyse kann es jedoch wünschenswert sein, sie stattdessen in einer Datenbank zu speichern. Dies ist zwar nicht direkt möglich, ohne einen benutzerdefinierten Fehlerhandler zu erstellen, kann aber mit einer einzigen globalen Änderung erreicht werden.

Implementierung eines benutzerdefinierten Fehlerhandlers

Der Schlüssel zur Kontrolle Die Art und Weise, wie Fehler behandelt werden, besteht darin, einen benutzerdefinierten Fehlerhandler zu erstellen. Dies kann mit der Funktion set_error_handler() erfolgen, die eine Callback-Funktion als Argument verwendet. Die Rückruffunktion sollte die folgende Signatur haben:

function error_handler($errno, $errstr, $errfile, $errline) {}
Nach dem Login kopieren

Innerhalb der Rückruffunktion können Sie festlegen, wie mit jedem Fehler umgegangen werden soll, einschließlich der Frage, ob er in einer Datenbank protokolliert werden soll.

Beispiel für die Fehlerprotokollierung in MySQL

Der folgende Code zeigt ein Beispiel für einen benutzerdefinierten Fehlerhandler, der PHP-Fehler in einer MySQL-Datenbank protokolliert:

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");
Nach dem Login kopieren

Nach dem Festlegen der benutzerdefinierten Fehlerhandler, alle PHP-Fehler werden durch Ihre benutzerdefinierte Fehlerbehandlungslogik weitergeleitet, einschließlich der Protokollierung in der MySQL-Datenbank.

Das obige ist der detaillierte Inhalt vonKönnen Sie PHP-Fehler in einer Datenbank statt in einer Protokolldatei speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage