Comment faire la journalisation des erreurs dans CodeIgniter (PHP)

je veux enregistrer les erreurs dans PHP CodeIgniter. Comment activer la journalisation des erreurs?

j'ai quelques questions:

  1. quelles sont les étapes pour enregistrer une erreur?
  2. comment créer un fichier journal des erreurs?
  3. Comment pousser le message d'erreur dans le fichier journal (chaque fois qu'une erreur se produit)?
  4. Comment envoyer cette erreur à une adresse courriel?
66
demandé sur Eric Leschinski 2010-07-09 08:21:46

4 réponses

CodeIgniter a quelques fonctions de journalisation d'erreurs intégrées.

  • Faire de votre /application/logs "151980920 dossier" inscriptible
  • Dans /application/config/config.PHP set

    $config['log_threshold'] = 1;

    ou utilisez un nombre plus élevé, en fonction de la quantité de détails que vous voulez dans vos journaux
  • Utiliser log_message('error', 'Some variable did not contain a value.');
  • pour envoyer un vous devez étendre la méthode de la classe core CI_Exceptions log_exceptions() . Vous pouvez le faire vous-même ou utiliser ce . Plus d'informations sur l'extension du noyau ici

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

135
répondu Keyo 2016-06-24 10:28:06

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

en premier lieu, 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 log:

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 le processus serveur. La manière la plus simple de rendre le fichier accessible en écriture est de faire de l'utilisateur du serveur le propriétaire du fichier. (L'utilisateur du serveur peut être nobody, _ww, apache, ou autre chose, selon votre distribution OS.)

pour envoyer l'erreur par e-mail, vous devez configurer un gestionnaire d'erreurs 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('you@yourdomain.com', 'I have an error', $message);
}
set_error_handler('mail_error', E_ALL^E_NOTICE);

consultez pertinentes de la documentation PHP pour plus d'info.

18
répondu Mark Eirich 2010-07-09 05:22:55

assurez-vous également que vous avez autorisé codeigniter à enregistrer le type de messages que vous voulez dans un fichier de configuration.

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

2
répondu Gpak 2016-01-30 13:43:14

pour en savoir plus sur la question partie 4 Comment envoyer cette erreur par courriel à une adresse de courriel? La fonction error_log a aussi la destination email. http://php.net/manual/en/function.error-log.php

Agha, ici j'ai trouvé un exemple qui montre une utilisation. envoyer un message d'erreurs par courriel 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
répondu Master James 2017-05-23 11:33:17