ErrorHandler

Soyez le premier à donner votre avis sur cette source.

Vue 2 057 fois - Téléchargée 474 fois

Description

ErrorHandler est un ensemble de classes qui vous permettrons d'assurer
efficacement le suivi de vos projets.
Il permet de capturer une erreur et par un jeu de classes annexes, de mener un certain
nombre d'actions.
-Notifier l'utilisateur par le biai d'un message personalisé (plus élégand que l'erreur PHP),
-Enregistrer l'erreur dans un journal

Pour utiliser cette classe :
il faut tout d'abord créer une fonction qui instanciera l'objet
<?php  
function setError(){ 
$error = new ErrorHandler;      
$error->attach(new LogFile("error.txt"));     
$error->attach(new Message());     
$error->attach(new Notifier());         
set_error_handler( array( $error, 'error' ) );  
} 
setError(); 
echo $b/1; 

la fonction set_error_handler vous permettra de remplacer le gestionnaire
d'exception par celui-ci.
En consultant le fichier error.txt vous constaterez que l'erreur a bien été enregistrée
-------------
11-01-2014.
Aprés la demande générale, je mets à jour l'ErrorHandler pour incorporer SysLog.
<?php function setError(){  $error = new ErrorHandler;       $error->attach(new LogFile("error.txt"));  $error->attach(new Message());      $error->attach(new Notifier()); $error->attach(new SysLog()); set_error_handler( array( $error, 'error' ) );   }  setError();  echo $b/1;  

Je laisse la V1 encore dans la source du code.
Si vous avez d'autres idées, n'hésitez pas à m'en faire part.
Pour venir en aide à tout le monde, j'ai commencé à mettre des commentaires technique.
Bonne chance à tous

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Scaq
Messages postés
8
Date d'inscription
lundi 7 octobre 2002
Statut
Membre
Dernière intervention
8 janvier 2014
-
Pas mal pour le coté objet de ton script.
Perso, juste pour ça je fait :

function rem_ip()
{
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) $IP = $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif(isset($_SERVER['HTTP_CLIENT_IP'])) $IP = $_SERVER['HTTP_CLIENT_IP'];
else $IP = $_SERVER['REMOTE_ADDR'];
if(strpos($IP,','))
{
$lstip = explode(',',$IP);
$IP = $lstip[0];
}
return $IP;
}

function errlogtxt($errtxt){
$fp = fopen('errlog'.date('Ymd').'.txt','a+');
fseek($fp,SEEK_END);
fputs($fp,"\r\n".'==========================================================='."\r\n\r\n".date('Y-m-d H:i:s')."\r\n".$errtxt."\r\n");
fclose($fp);
}

function myErrorHandler($errno, $errstr, $errfile, $errline)
{
switch ($errno) {
case E_ERROR: // 1 //*
case 1:
$type_erreur = 'ERROR';
break;
case E_WARNING: // 2 //
case 2:
$type_erreur = 'WARNING';
break;
case E_PARSE: // 4 //
case 4:
$type_erreur = 'PARSE';
break;
case E_NOTICE: // 8 //
case 8:
$type_erreur = 'NOTICE';
break;
case E_CORE_ERROR: // 16 //
case 16:
$type_erreur = 'CORE_ERROR';
break;
case E_CORE_WARNING: // 32 //
case 32:
$type_erreur = 'CORE_WARNING';
break;
case E_CORE_ERROR: // 64 //
case 64:
$type_erreur = 'COMPILE_ERROR';
break;
case E_CORE_WARNING: // 128 //
case 128:
$type_erreur = 'COMPILE_WARNING';
break;
case E_USER_ERROR: // 256 //
case 256:
$type_erreur = 'USER_ERROR';
break;
case E_USER_WARNING: // 512 //
case 512:
$type_erreur = 'USER_WARNING';
break;
case E_USER_NOTICE: // 1024 //
case 1024:
$type_erreur = 'USER_NOTICE';
break;
case E_STRICT: // 2048 //
case 2048:
$type_erreur = 'STRICT';
break;
case E_RECOVERABLE_ERROR: // 4096 //
case 4096:
$type_erreur = 'RECOVERABLE_ERROR';
break;
case E_DEPRECATED: // 8192 //
case 8192:
$type_erreur = 'DEPRECATED';
case E_USER_DEPRECATED: // 16384 //
case 16384:
$type_erreur = 'USER_DEPRECATED';
break;
default:
$type_erreur = 'INCONNUE';
break;
}

$ip = rem_ip();

$errtxt = $ip.' ('.$type_erreur.') ['.$errno.'] '.$errstr."\r\n".'ligne '.$errline.' dans le fichier '.$errfile."\r\n";
errlogtxt($errtxt);
//if(_DEV_) return false;
/* Ne pas exécuter le gestionnaire interne de PHP */
return true;
}


set_error_handler("myErrorHandler");
olivier35tf
Messages postés
76
Date d'inscription
jeudi 28 octobre 2010
Statut
Webmaster
Dernière intervention
16 juillet 2019
-
Hello,

Cool.
Cela serait sympa en plus d'ajouter une classe de pour envoyer les infos dans syslog

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.