Je travaille sur mon site depuis plus d'un an maintenant, et j'ai très hâte de le mettre à la disposition des gens. Il est devenu assez grand cependant - je veux presque dire hors de mon contrôle - et en plus de cela, je suis vraiment un programmeur amateur autodidacte. Donc, je veux être sûr que toutes les erreurs que php produit sont enregistrées dans un fichier, donc je peux accéder à ce fichier et suivre les erreurs.Comment changer la façon dont PHP écrit les erreurs dans le fichier journal des erreurs?
Actuellement mes paramètres sont les suivants:
<?php
error_reporting(E_ALL);
ini_set('display_errors', '0');
ini_set('log_errors', 1);
ini_set('error_log', 'errors.log');
?>
fonctionne assez bien jusqu'à présent, mon fichier error.log contiendra des choses comme ceci:
[14-mai-2013 00:16 : 26] Note PHP: Variable indéfinie: nonexistentvariable in /home/www/dir/index.php on line 14 [14-May-2013 00:16:28] Note PHP: Variable non définie: nonexistentvariable in/home/www/dir /index.php à la ligne 14
Génial, les erreurs sont consignées.
Mais maintenant j'ai un problème:
Ils sont en une seule ligne, pas de pauses. Cela rend la lecture difficile. Comment puis-je obtenir chaque erreur dans une nouvelle ligne?
Je vois qu'il y a un horodatage. Impressionnant! Comment puis-je également ajouter des choses comme l'adresse IP de l'utilisateur, ou d'autres choses personnalisées?
Encore une fois, mes questions:
Comment changer la façon dont PHP écrit des erreurs dans le fichier journal des erreurs? En particulier, comment puis-je créer une nouvelle ligne après chaque erreur qui a été enregistrée, de sorte que le fichier error.log est plus facile à lire. Et comment puis-je ajouter des données et des valeurs personnalisées telles que des adresses IP?
RÉPONSE: je fini par faire ce qui suit - ce qui semble se reproduire un peu ce que php est fait par la norme et peut de là être modifié.
<?php
function my_error_handler($type, $message, $file, $line, $vars)
{
switch($type)
{
case 1: // 1 //
$type_str = 'ERROR';
break;
case 2: // 2 //
$type_str = 'WARNING';
break;
case 4: // 4 //
$type_str = 'PARSE';
break;
case 8: // 8 //
$type_str = 'NOTICE';
break;
case 16: // 16 //
$type_str = 'CORE_ERROR';
break;
case 32: // 32 //
$type_str = 'CORE_WARNING';
break;
case 64: // 64 //
$type_str = 'COMPILE_ERROR';
break;
case 128: // 128 //
$type_str = 'COMPILE_WARNING';
break;
case 256: // 256 //
$type_str = 'USER_ERROR';
break;
case 512: // 512 //
$type_str = 'USER_WARNING';
break;
case 1024: // 1024 //
$type_str = 'USER_NOTICE';
break;
case 2048: // 2048 //
$type_str = 'STRICT';
break;
case 4096: // 4096 //
$type_str = 'RECOVERABLE_ERROR';
break;
case 8192: // 8192 //
$type_str = 'DEPRECATED';
break;
case 16384: // 16384 //
$type_str = 'USER_DEPRECATED';
break;
}
$errormessage = '[ '.date(r).' ] '.$type_str.': '.$message.' in '.$file.' on line '.$line."\n";
// for development simply ECHO $errormessage;
$file = 'my_errors.log';
file_put_contents($file, $errormessage, FILE_APPEND);
}
error_reporting(E_ALL);
ini_set('display_errors', '0');
set_error_handler('my_error_handler');
?>
Ceci est également discuté dans ce fil http://stackoverflow.com/questions/30630484/is-it-possible-to-change-php-error-log-output – Salagir
Ceci est également discuté dans http: // stackoverflow .com/questions/30630484/is-it-it-to-change-php-error-log-output – Salagir
Ceci est également discuté sur http: // stackoverflow.com/questions/30630484/is-it-it-it-to-change-php-error-log-output – Salagir