wake-up-neo.com

Wie macht man die Fehlerprotokollierung in CodeIgniter (PHP)

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 schieben Sie die Fehlermeldung in die Protokolldatei (wann immer ein Fehler auftritt)?
  4. Wie können Sie diesen Fehler per E-Mail an eine E-Mail-Adresse senden?
72
udaya

CodeIgniter verfügt über einige integrierte Fehlerprotokollierungsfunktionen.

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

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

151
Keyo

Um einfach eine Zeile in das Fehlerprotokoll des Servers zu schreiben, verwenden Sie die Funktion error_log () von PHP. Diese Methode sendet jedoch keine E-Mail.

Erstens, um einen Fehler auszulösen:

trigger_error("Error message here", E_USER_ERROR);

Standardmäßig wird dies in die Fehlerprotokolldatei des Servers aufgenommen. 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 gewählte Protokolldatei bereits vorhanden sein muss und vom Serverprozess beschreibbar sein muss. Die einfachste Möglichkeit, die Datei beschreibbar zu machen, besteht darin, den Serverbenutzer zum Eigentümer der Datei zu machen. (Der Serverbenutzer kann je nach Betriebssystemverteilung Niemand, _www, Apache oder etwas anderes sein.)

Um den Fehler per E-Mail zu versenden, müssen Sie einen benutzerdefinierten Fehlerhandler 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 Dokumentation zu relevant PHP .

21
Mark Eirich

Stellen Sie außerdem sicher, dass Sie Codeigniter zum Protokollieren des Nachrichtentyps zugelassen haben, den Sie in einer Konfigurationsdatei angeben möchten.

das heißt $config['log_threshold'] = [log_level ranges 0-4];

2
Gpak

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

Agha, hier habe ich ein Beispiel gefunden, das eine Verwendung zeigt . Fehlermeldung über E-Mail senden 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);
0
Master James