Wie schreibe ich in eine Fehlerprotokolldatei in PHP [geschlossen]

74

Ich möchte beim Ausführen von PHP-Code eine Nachricht in eine Fehlerprotokolldatei schreiben.

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

Aber es funktioniert nicht richtig für mich.

Vasant
quelle
13
Was meinst du mit "es funktioniert nicht richtig"
Was hast du am
7
Zeigen Sie uns, was Sie versucht haben . Sagen Sie, was Sie bekommen und was Sie erwarten.
UnholyRanger
Bitte zeigen Sie Ihren Code, sagen Sie, was Sie erwartet haben, und beschreiben Sie stattdessen, was passiert. Normalerweise error_log()funktioniert die Funktion nur und Sie haben nicht gesagt, was genau für Sie nicht funktioniert hat, sodass Ihre Frage nicht klar ist.
hakre
Tutorial dazu: code2real.blogspot.in/2015/06/…
Schüler
Dies kann auf ein Berechtigungsproblem zurückzuführen sein, bei dem sich der Benutzer, für den Sie die Fehlerprotokolldatei erstellt haben, von dem Benutzer unterscheidet, mit dem Apache in die Datei schreibt. Überprüfen Sie die Datei '/ etc / apache2 / envvars /' auf eine mögliche Lösung.
Robert Brisita

Antworten:

117

Wenn Sie laut PHP-Dokumentation nichts in Ihrer php.ini-Datei ändern möchten , können Sie dies 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 3bedeutet, ein Dateiziel zu erwarten. Der dritte Parameter ist der Protokolldateipfad.

Verdächtiger
quelle
1
Ich mache nur, error_log("Error message\n")aber nichts erscheint in /var/log/httpd/error_log. :( Irgendeine Idee warum?
trusktr
3
In php.iniDatei überprüfen Sie die error_log Konfigurationseinstellung. Diese Einstellung enthält den Dateinamen, in den Fehler geschrieben werden. zB error_log "log_file_name". Weitere Details unter php.net/manual/en/function.error-log.php
suspectus
Tutorial dazu: code2real.blogspot.in/2015/06/…
Schüler
@suspectus, deine Antwort ist das, wonach ich lange genug gesucht habe. Ich glaube, der dritte Parameter könnte eine beliebige Datei sein, in der ich die Fehlermeldung protokollieren möchte \ n. Hab ich recht?
CodeForGood
@ Schüler, bitte sagen Sie mir, wie lange die Daten in der Protokolldatei verbleiben, in die error_log () geschrieben hat.
CodeForGood
44

Sie können einfach verwenden:

error_log("your message");

Standardmäßig wird die Nachricht an den PHP-Systemlogger gesendet.

SkaJess
quelle
10
Wenn Sie diese Methode verwenden, stellen Sie sicher, dass die Fehlerprotokollierung aktiviert ist und dass Sie die error_logAnweisung in php.ini auskommentieren.
George Cummins
5
-1 für den Vorschlag, ein Jahr nach der Frage, was das OP bereits gesagt hat, dass er es versucht hat, aber für ihn nicht funktioniert hat. Außerdem gibt es bereits eine BESSERE Antwort von Verdächtigem, die ein Jahr vor dieser Antwort erstellt wurde.
ToolmakerSteve
@ToolmakerSteve, Dies ist auch eine ziemlich gute Alternative.
Pacerier
@ Pacerier - Diese Antwort ist bereits, was der OP sagte, er versuchte. Was trägt es zur Diskussion bei?
ToolmakerSteve
2
@ToolmakerSteve Er hat nicht wirklich gesagt, wie er es benutzt hat, nur dass er versucht hat, es zu benutzen. Die akzeptierte (und sehr gute) Antwort verwendet error_logauch ...
Ben Visness
17

Wir alle wissen, dass PHP Fehler in der Datei php_errors.log speichert.

Diese Datei enthält jedoch viele 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 tun mit:

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

Wo,

print_r($v, TRUE) :protokolliert $ v (Array / String / Objekt) in der Protokolldatei. 3: Protokollnachricht in benutzerdefinierte Protokolldatei einfügen, die im dritten Parameter angegeben ist.

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

ODER können Sie verwenden 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 ist für Linux, wir können je nach Betriebssystem andere angeben). print_r($v, TRUE) :protokolliert $ v (Array / String / Objekt) in der Protokolldatei. FILE_APPEND: Konstanter Parameter, der angibt, ob an die Datei angehängt werden soll, wenn sie vorhanden ist. Wenn die Datei nicht vorhanden ist, wird eine neue Datei erstellt.

Schüler
quelle
3

Sie können den normalen Dateibetrieb verwenden, um ein Fehlerprotokoll zu erstellen. Verweisen Sie einfach darauf und geben Sie diesen Link ein: PHP File Handling

Hraday Joshi
quelle