web-dev-qa-db-fra.com

Comment enregistrer les erreurs dans CodeIgniter (PHP)

Je veux une erreur de connexion dans PHP CodeIgniter. Comment puis-je activer la journalisation des erreurs? 

J'ai quelques questions:

  1. Quelles sont toutes les étapes pour enregistrer une erreur?
  2. Comment un fichier journal d'erreur est-il créé?
  3. Comment envoyer le message d'erreur dans le fichier journal (chaque fois qu'une erreur se produit)?
  4. Comment envoyez-vous cette erreur par courrier électronique à une adresse électronique?
72
udaya

CodeIgniter a des fonctions de journalisation des erreurs intégrées.

  • Rendez votre dossier / application/logs accessible en écriture 
  • Dans /application/config/config.php, définissez 
    $config['log_threshold'] = 1;
    ou utilisez un nombre plus élevé, en fonction du nombre de détails que vous souhaitez dans vos journaux
  • Utilisez log_message('error', 'Some variable did not contain a value.');
  • Pour envoyer un courrier électronique, vous devez étendre la méthode de base de la classe CI_Exceptions log_exceptions(). Vous pouvez le faire vous-même ou utiliser this . Plus d'infos sur l'extension du noyau ici

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

151
Keyo

Pour simplement mettre une ligne dans le journal des erreurs du serveur, utilisez la fonction error_log () de PHP. Cependant, cette méthode n'enverra pas de courrier électronique.

Tout d'abord, pour déclencher une erreur:

trigger_error("Error message here", E_USER_ERROR);

Par défaut, cela ira dans le fichier journal des erreurs du serveur. Voir la directive ErrorLog pour Apache. Pour définir votre propre fichier journal:

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

Notez que le fichier journal que vous choisissez doit déjà exister et être accessible en écriture pour le processus serveur. Le moyen le plus simple de rendre le fichier accessible en écriture consiste à faire de l'utilisateur du serveur le propriétaire du fichier. (L'utilisateur du serveur peut être personne, _www, Apache ou autre, selon la distribution de votre système d'exploitation.)

Pour envoyer l'erreur par courrier électronique, vous devez configurer un gestionnaire d'erreur personnalisé:

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);

Veuillez consulter la documentation pertinente PHP pour plus d'informations.

21
Mark Eirich

Assurez-vous également que vous avez autorisé codeigniter à consigner le type de messages souhaité dans un fichier de configuration.

i.e $config['log_threshold'] = [log_level ranges 0-4];

2
Gpak

Pour en savoir plus sur la question 4 Comment envoyer cette erreur par courrier électronique à une adresse électronique? La fonction error_log contient également une adresse électronique . http://php.net/manual/fr/function. error-log.php

Agha, voici que j'ai trouvé un exemple qui montre un usage . Envoyer un message d'erreur par email en utilisant 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