2013-03-20 1 views
47

Ich möchte eine Nachricht in eine Fehlerprotokolldatei schreiben, wenn PHP-Code ausgeführt wird.So schreiben Sie in Fehlerprotokolldatei in PHP

Ich versuche, die PHP error_log() Funktion Docs zu verwenden.

Aber es funktioniert nicht richtig für mich.

+11

Was meinen Sie mit "es funktioniert nicht richtig" –

+5

Zeigen Sie uns [was haben Sie versucht] (http://www.whathaveyoutried.com). Sagen Sie, was Sie bekommen und was Sie erwarten. – UnholyRanger

+0

Bitte zeigen Sie Ihren Code, sagen Sie, was Sie erwartet haben, beschreiben Sie, was passiert. Normalerweise funktioniert die 'error_log()' Funktion einfach und Sie haben nicht gesagt, was genau nicht für Sie funktioniert hat, daher ist Ihre Frage nicht klar. – hakre

Antwort

84

Wenn Sie nichts in Ihrer php.ini-Datei ändern möchten, können Sie dies gemäß PHP documentation tun.

error_log("Error message\n", 3, "/mypath/php.log"); 

Der erste Parameter ist die Zeichenfolge, die an das Protokoll gesendet werden soll. Der zweite Parameter 3 bedeutet, dass ein Dateiziel erwartet wird. Der dritte Parameter ist der Protokolldateipfad.

+1

Ich mache gerade 'error_log (" Fehlermeldung \ n ") 'aber nichts erscheint in'/var/log/httpd/error_log'. :(Irgendeine Idee warum? – trusktr

+3

In 'php.ini' Datei überprüfen Sie die Konfigurationseinstellung error_log. Diese Einstellung enthält den Dateinamen, in den Fehler geschrieben werden. ZB' error_log "log_file_name" '. Weitere Details unter http: // php. net/manual/de/function.error-log.php – suspectus

+0

Tutorial dazu: http://code2real.blogspot.in/2015/06/php-generate-log-messages-and-save-to.html – Pupil

3

Sie können den normalen Dateivorgang verwenden, um ein Fehlerprotokoll zu erstellen. siehe gerade auf diese und geben Sie diesen Link: PHP File Handling

29

Sie einfach verwenden können:

error_log("your message"); 

Standardmäßig wird die Nachricht an das PHP-System-Logger gesendet.

+8

Wenn Sie Verwenden Sie diese Methode, stellen Sie sicher, dass die Fehlerprotokollierung aktiviert ist und dass Sie die 'error_log' Direktive in php.ini –

+4

-1 für das Vorschlagen, ein Jahr, nachdem die Frage gestellt wurde, was der OP bereits sagte er versucht, aber tat nicht funktionieren für ihn Auch gibt es bereits eine bessere Antwort von suspectus, erstellt ein Jahr vor dieser Antwort – ToolmakerSteve

+0

@ToolmakerSteve, das ist eine ziemlich gute Alternative auch – Pacerier

6

Für den WAMP Server 3.0-Benutzer:

Sie Änderungen in C:\wamp64\bin\php\php[5.*/7.*]\phpForApache.ini

Kommentar- diese Linien machen müssen:

log_errors = On 
error_log = "c:/wamp/logs/php_error.log" 
Ihre Protokolle in ähnlicher Art Pfad

Check out wie ich Erwähnen Sie hier:

c:/wamp/logs/php_error.log 
+1

Stellen Sie auch sicher, dass 'log_errors = on' ist – ToolmakerSteve

9

Wir alle wissen, dass PHP Fehler speichern in php_errors.log-Datei.

Aber diese Datei enthält eine Menge Daten.

Wenn wir unsere Anwendungsdaten protokollieren möchten, müssen wir sie an einem benutzerdefinierten Speicherort speichern.

Wir können zwei Parameter in der Funktion error_log verwenden, um dies zu erreichen.

http://php.net/manual/en/function.error-log.php

Wir können es mit:

error_log(print_r($v, TRUE), 3, '/var/tmp/errors.log'); 

Wo

print_r($v, TRUE) : logs $ v (array/string/Objekt) Datei zu protokollieren. 3: Setzen Sie die Protokollnachricht in die benutzerdefinierte Protokolldatei, die im dritten Parameter angegeben wurde.

'/var/tmp/errors.log': Benutzerdefinierte Protokolldatei (Dieser Pfad ist für Linux, wir können andere je nach Betriebssystem angeben).

OR, können Sie file_put_contents()

file_put_contents('/var/tmp/e.log', print_r($v, true), FILE_APPEND); 

Wo:

'/var/tmp/errors.log': Benutzerdefinierte Protokolldatei (Dieser Pfad für Linux ist, können wir anderen geben, je nach OS). print_r($v, TRUE) : protokolliert $ v (Array/String/Objekt) zur Protokolldatei. FILE_APPEND: Konstanter Parameter, der angibt, ob an die Datei angehängt werden soll, wenn sie existiert. Wenn die Datei nicht existiert, wird eine neue Datei erstellt.