So führen Sie eine Fehlerprotokollierung in CodeIgniter (PHP) durch

92

Ich möchte eine Fehlerprotokollierung in PHP CodeIgniter. Wie aktiviere ich die Fehlerprotokollierung?

Ich habe ein paar Fragen:

  1. Was sind alle Schritte, um einen Fehler zu protokollieren?
  2. Wie wird eine Fehlerprotokolldatei erstellt?
  3. Wie kann ich die Fehlermeldung in die Protokolldatei übertragen (wenn ein Fehler auftritt)?
  4. Wie können Sie diesen Fehler per E-Mail an eine E-Mail-Adresse senden?
udaya
quelle

Antworten:

180

In CodeIgniter sind einige Fehlerprotokollierungsfunktionen integriert.

  • Machen Sie Ihren Ordner / application / logs beschreibbar
  • Legen Sie in /application/config/config.php
    $config['log_threshold'] = 1;
    eine höhere Zahl fest oder verwenden Sie sie, je nachdem, wie viele Details Sie in Ihren Protokollen haben möchten
  • Verwenden log_message('error', 'Some variable did not contain a value.');
  • Um eine E-Mail zu senden, müssen Sie die CI_Exceptions-Kernklassenmethode erweitern log_exceptions(). Sie können dies selbst tun oder verwenden Sie diese . Weitere Informationen zur Erweiterung des Kerns finden Sie hier

Siehe http://www.codeigniter.com/user_guide/general/errors.html

Keyo
quelle
Gibt es dafür Sicherheitsrisiken?
Aakil Fernandes
Dies speichert Daten in einer PHP-Datei, deren Dateiname das Format hat: log- [Ymd H: i: s] oder welcher Wert auch immer in der in Ihrer Konfigurationsdatei definierten Schlüsselkonfiguration log_date_format festgelegt ist. Solange Sie keine sensiblen Daten protokollieren / sichern können, sollte dies ziemlich sicher sein. Diese Datei ist standardmäßig relativ zu einer index.html-Seite, sodass offensichtlich generierte PHP-Dateien nicht öffentlich zugänglich sind - aber Sie werden es nie erfahren. Stellen Sie sicher, dass alle diese Vorsichtsmaßnahmen vorhanden sind, wenn Sie das Standardverzeichnis für Anwendungen / Protokolle ändern.
Vincent Edward Gedaria Binua
7
Machen Sie Ihren Ordner / application / logs beschreibbar <<< das hat mir geholfen
user1312695
Wenn ich "$ config ['log_threshold'] = 1;" setze, habe ich keine Protokolle in meinem Ordner / application / logs erhalten. Wenn ich jedoch "$ config ['log_threshold'] = 3" setze, wird eine Protokolldatei angezeigt. Hoffe das hilft. Danke dir! Frieden.
Masarapmabuhay
25

Verwenden Sie die Funktion error_log () von PHP, um einfach eine Zeile in das Fehlerprotokoll des Servers einzufügen. Diese Methode sendet jedoch keine E-Mail.

Um einen Fehler auszulösen:

trigger_error("Error message here", E_USER_ERROR);

Standardmäßig wird dies in der Fehlerprotokolldatei des Servers gespeichert. Siehe die ErrorLog-Direktive für Apache. So legen Sie Ihre eigene Protokolldatei fest:

ini_set('error_log', 'path/to/log/file');

Beachten Sie, dass die von Ihnen ausgewählte Protokolldatei bereits vorhanden und vom Serverprozess beschreibbar sein muss. Der einfachste Weg, die Datei beschreibbar zu machen, besteht darin, den Serverbenutzer zum Eigentümer der Datei zu machen. (Der Serverbenutzer kann abhängig von Ihrer Betriebssystemverteilung niemand, _www, Apache oder etwas anderes sein.)

Um den Fehler per E-Mail zu senden, müssen Sie einen benutzerdefinierten Fehlerbehandler einrichten:

function mail_error($errno, $errstr, $errfile, $errline) {
  $message = "[Error $errno] $errstr - Error on line $errline in file $errfile";
  error_log($message); // writes the error to the log file
  mail('[email protected]', 'I have an error', $message);
}
set_error_handler('mail_error', E_ALL^E_NOTICE);

Weitere Informationen finden Sie in der entsprechenden PHP-Dokumentation .

Mark Eirich
quelle
3

Stellen Sie außerdem sicher, dass Sie Codeigniter erlaubt haben, den gewünschten Nachrichtentyp in einer Konfigurationsdatei zu protokollieren.

dh $config['log_threshold'] = [log_level ranges 0-4];

Gpak
quelle
1

Weitere Informationen zu Frage 4 Wie senden Sie diesen Fehler per E-Mail an eine E-Mail-Adresse? Die error_log-Funktion hat auch ein E-Mail-Ziel. http://php.net/manual/en/function.error-log.php

Agha, hier habe ich ein Beispiel gefunden, das eine Verwendung zeigt. Senden Sie eine Fehlermeldung per E-Mail mit error_log ()

error_log($this->_errorMsg, 1, ADMIN_MAIL, "Content-Type: text/html; charset=utf8\r\nFrom: ".MAIL_ERR_FROM."\r\nTo: ".ADMIN_MAIL);
Meister James
quelle
0
In config.php add or edit the following lines to this:
------------------------------------------------------
$config['log_threshold'] = 4; // (1/2/3)
$config['log_path'] = '/home/path/to/application/logs/';

Run this command in the terminal:
----------------------------------
sudo chmod -R 777 /home/path/to/application/logs/
Charleskimani
quelle