5 Stimmen

Können Sie PHP-Fehler in mehrere Dateien protokollieren?

Ist es möglich, denselben Fehler sowohl an ein globales PHP-Fehlerprotokoll in /var/log/php_errors als auch an ein lokales Fehlerprotokoll in /var/www/mysite/php_errors zu senden?

Auf unserem Testserver verfolge ich die Protokolldatei und es kommen viele Wordpress-Sachen sowie einige große hässliche print_r's von anderen Entwicklern durch. Ich möchte eine globale Fehlerdatei haben, um zu sehen, ob es hin und wieder serverweit zu Problemen kommt, sowie meine lokalen Fehler separat zu haben, damit ich ihnen besser folgen kann, wenn ich mich gerade nur für eine Website interessiere.

3voto

Ingmar Boddington Punkte 3385

Verwenden Sie set_error_handler und erstellen Sie eine benutzerdefinierte Fehlerfunktion mit so viel Protokollierung wie gewünscht.

2voto

Mark Baker Punkte 204969

Wenn Sie eine Bibliothek wie log4php verwenden, können Sie eine Vielzahl von Protokollierungsoptionen konfigurieren, einschließlich des Schreibens in mehrere Dateien, dem Senden von E-Mails usw. basierend auf dem Protokolltyp.

1voto

jasonlfunk Punkte 5049

Nicht dass ich wüsste. Allerdings könnten Sie die error_prepend_string-Ini-Einstellung verwenden und alle Ihre Fehlerprotokolle mit etwas voranstellen. Und wenn Sie dann Ihre Protokolldateien anzeigen, können Sie nach dem suchen, was Sie festgelegt haben, und es zeigt Ihnen nur Nachrichten von dieser Site an (solange Sie etwas ziemlich Einzigartiges wählen).

http://www.php.net/manual/en/errorfunc.configuration.php#ini.error-prepend-string

0voto

Shawinder Sekhon Punkte 1519

Sie können diesen Code in einer freigegebenen Datei verwenden und die entsprechende Protokollierungsfunktion aufrufen:

function log_to_file_1($msg){
   ini_set("log_errors", 1); 
   ini_set("error_log", "/tmp/file_1.log");
   ini_set('log_errors_max_len', 1024); // Größe der Protokollierungsdatei
   error_log($msg);
}

function log_to_file_2($msg){
   ini_set("log_errors", 1); 
   ini_set("error_log", "/tmp/file_2.log");
   ini_set('log_errors_max_len', 1024); // Größe der Protokollierungsdatei
   error_log($msg);
}

Sie können auch eine einzelne Protokollierungsfunktion mit dem Dateinamen als Parameter verwenden:

function mysql_error_log($filename, $msg){
  ini_set("log_errors", 1); 
  ini_set("error_log", "/tmp/$filename");
  ini_set('log_errors_max_len', 1024); // Größe der Protokollierungsdatei
  error_log($msg);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X