begin process at 2012 05 27 17:53:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > PHP 5 CLASSE DE LOG PARAMÉTRÉE PAR UN FICHIER XML

PHP 5 CLASSE DE LOG PARAMÉTRÉE PAR UN FICHIER XML


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Classé sous :log, fichier, xml Niveau :Débutant Date de création :28/02/2007 Vu / téléchargé :7 712 / 407

Auteur : morpheus57

Ecrire un message privé
Site perso
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Cette source est simplement une classe de logs paramétrée par un fichier xml : on peut y ajouter différents types de logs (debug, error, sql, etc...) définir un fichier différent pour chaque type et définir une adresse mail qui recevra la liste des erreurs.
Remarque : l'adresse mail est optionnelle (évite le spam dans un projet en cours de développement).

Cette source se décompose en 3 fichiers :
log.php -> contient la classe en elle même
logConfig.xml -> configuration
test.php -> un fichier de test que j'ai utilisé pour le développement

Source

  • <?php
  • /**
  • * Log manager class
  • *
  • */
  • class Log
  • {
  • /**
  • * Default log file
  • *
  • */
  • const DEFAULT_LOG_FILE = 'default.xml';
  • /**
  • * Xml file initialization
  • *
  • */
  • const INITIALIZATION_TEXT = "<?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?><logs></logs>";
  • /**
  • * Default mail subject
  • *
  • */
  • const MAIL_SUBJECT = 'Error log';
  • /**
  • * log type
  • *
  • * @var string
  • */
  • private $type;
  • /**
  • * file name
  • *
  • * @var string
  • */
  • private $file;
  • /**
  • * mail address
  • *
  • * @var string
  • */
  • private $mail;
  • /**
  • * log message list
  • *
  • * @var array
  • */
  • private $logArray = array();
  • /**
  • * Accessor
  • *
  • * @param string $type
  • */
  • public function setType($type)
  • {
  • $this -> type = $type;
  • }
  • /**
  • * Accessor
  • *
  • * @return string
  • */
  • public function getType()
  • {
  • return $this -> type;
  • }
  • /**
  • * Accessor
  • *
  • * @param string $file
  • */
  • public function setFile($file)
  • {
  • $this -> file = $file;
  • }
  • /**
  • * Accessor
  • *
  • * @return string
  • */
  • public function getFile()
  • {
  • return $this -> file;
  • }
  • /**
  • * Accessor
  • *
  • * @return array
  • */
  • public function getLogArray()
  • {
  • return $this -> logArray;
  • }
  • /**
  • * Accessor
  • *
  • * @param array $array
  • */
  • public function setLogArray( array $array )
  • {
  • $this -> logArray = $array;
  • }
  • /**
  • * Accessor
  • *
  • * @return string
  • */
  • public function getMail()
  • {
  • return $this -> mail;
  • }
  • /**
  • * Accessor
  • *
  • * @param string $mail
  • */
  • public function setMail($mail)
  • {
  • $this -> mail = $mail;
  • }
  • /**
  • * Constructor
  • *
  • * @param string $type
  • */
  • public function __construct($type = 'udefined')
  • {
  • $this -> type = $type;
  • //get log file from xml config
  • $xml = simplexml_load_file('logConfig.xml');
  • $xpathResult = (array) $xml -> xpath("/logs/log[type='" . $type . "']/file");
  • $file = (string) $xpathResult[0];
  • if (trim($file) !='')
  • $this -> file = $file;
  • else
  • $this -> file = self::DEFAULT_LOG_FILE;
  • //get mail from xml config
  • $xpathResult = (array) $xml -> xpath("/logs/log[type='" . $type . "']/mail");
  • $mail = (string) $xpathResult[0];
  • if (trim($mail) !='')
  • $this -> mail = $mail;
  • }
  • /**
  • * Write a log message in xml file
  • *
  • * @param string $logMessage
  • */
  • public function write($logMessage)
  • {
  • if (!file_exists($this -> file) )
  • {
  • //if not exists -> creat
  • $file = fopen($this -> file, 'w');
  • fputs($file, self::INITIALIZATION_TEXT);
  • fclose($file);
  • }
  • //xml building
  • $xml = simplexml_load_file($this -> file);
  • $xml->addChild('log');
  • $newNodeIndex = count($xml -> log) - 1;
  • $xml-> log[$newNodeIndex] ->addChild('type', $this -> type);
  • $xml-> log[$newNodeIndex] ->addChild('date', date('d-m-Y H:i:s'));
  • $xml-> log[$newNodeIndex] -> addChild('message', $logMessage);
  • //log array building
  • $this -> logArray[] = date('d-m-Y H:i:s') . " " . $this -> type . " : " . $logMessage;
  • //write xml in file
  • $handle = fopen($this -> file, 'w+');
  • fputs($handle, $xml->asXML());
  • fclose($handle);
  • }
  • /**
  • * Send a mail : see logConfig.xml
  • * only if mail is set in xml file
  • *
  • */
  • public function sendMail()
  • {
  • if( isset($this -> mail))
  • {
  • $mailText = '';
  • foreach ($this -> logArray as $log)
  • $mailText .= $log . "\n";
  • if( trim($mailText)!='' )
  • mail($this -> mail, self::MAIL_SUBJECT, $mailText);
  • }
  • }
  • /**
  • * Desctructor
  • *
  • */
  • public function __destruct()
  • {
  • $this -> sendMail();
  • }
  • }
  • ?>
<?php
/**
 * Log manager class
 *
 */
class Log
{

    /**
     * Default log file
     *
     */
    const DEFAULT_LOG_FILE = 'default.xml';

    /**
     * Xml file initialization
     *
     */
    const INITIALIZATION_TEXT = "<?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?><logs></logs>";

    /**
     * Default mail subject
     *
     */
    const MAIL_SUBJECT = 'Error log';


    /**
     * log type
     *
     * @var string
     */
    private $type;

    /**
     * file name
     *
     * @var string
     */
    private $file;

    /**
     * mail address
     *
     * @var string
     */
    private $mail;

    /**
     * log message list
     *
     * @var array
     */
    private $logArray = array();


    /**
     * Accessor
     *
     * @param string $type
     */
    public function setType($type)
    {
        $this -> type = $type;
    }

    /**
     * Accessor
     *
     * @return string
     */
    public function getType()
    {
        return $this -> type;
    }

    /**
     * Accessor
     *
     * @param string $file
     */
    public function setFile($file)
    {
        $this -> file = $file;
    }

    /**
     * Accessor
     *
     * @return string
     */
    public function getFile()
    {
        return $this -> file;
    }

    /**
     * Accessor
     *
     * @return array
     */
    public function getLogArray()
    {
        return $this -> logArray;
    }

    /**
     * Accessor
     *
     * @param array $array
     */
    public function setLogArray( array $array )
    {
        $this -> logArray = $array;
    }

    /**
     * Accessor
     *
     * @return string
     */
    public function getMail()
    {
        return $this -> mail;
    }

    /**
     * Accessor
     *
     * @param string $mail
     */
    public function setMail($mail)
    {
       $this -> mail = $mail;
    }

    /**
     * Constructor
     *
     * @param string $type
     */
    public function __construct($type = 'udefined')
    {
        $this -> type = $type;

        //get log file from xml config
        $xml = simplexml_load_file('logConfig.xml');
        $xpathResult = (array) $xml -> xpath("/logs/log[type='" . $type . "']/file");
        $file = (string) $xpathResult[0];

        if (trim($file) !='')
            $this -> file = $file;
        else
            $this -> file = self::DEFAULT_LOG_FILE;

        //get mail from xml config
        $xpathResult = (array) $xml -> xpath("/logs/log[type='" . $type . "']/mail");
        $mail = (string) $xpathResult[0];

        if (trim($mail) !='')
            $this -> mail = $mail;

    }

    /**
     * Write a log message in xml file
     *
     * @param string $logMessage
     */
    public function write($logMessage)
    {
        if (!file_exists($this -> file) )
        {
            //if not exists -> creat
            $file = fopen($this -> file, 'w');
            fputs($file, self::INITIALIZATION_TEXT);
            fclose($file);
        }

        //xml building
        $xml = simplexml_load_file($this -> file);
        $xml->addChild('log');
        $newNodeIndex = count($xml -> log) - 1;
        $xml-> log[$newNodeIndex] ->addChild('type', $this -> type);
        $xml-> log[$newNodeIndex] ->addChild('date', date('d-m-Y H:i:s'));
        $xml-> log[$newNodeIndex] -> addChild('message', $logMessage);

        //log array building
        $this -> logArray[] = date('d-m-Y H:i:s') . " " . $this -> type . " : " . $logMessage;

        //write xml in file
        $handle = fopen($this -> file, 'w+');
        fputs($handle, $xml->asXML());
        fclose($handle);
    }

    /**
     * Send a mail : see logConfig.xml
     * only if mail is set in xml file
     *
     */
    public function sendMail()
    {
        if( isset($this -> mail))
        {

            $mailText = '';

            foreach ($this -> logArray as $log)
                $mailText .= $log . "\n";

            if( trim($mailText)!='' )
                mail($this -> mail, self::MAIL_SUBJECT, $mailText);
        }
    }


    /**
     * Desctructor
     *
     */
    public function __destruct()
    {
        $this -> sendMail();
    }


}
?>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources de la même categorie

SUPPRESSION AUTOMATIQUE DES FICHIERS RAW ORPHELINS APRÈS UN ... par malokaff
UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151

 Sources en rapport avec celle ci

CLASSE DE GESTION DE "VARIABLES GLOBALES D'ENVIRONNEMENT" par pifou25
Source avec Zip CLASS DE LOG PHP5 par dorian91
CLASSE SIMPLE DE CRÉATION DE FICHIER XML par pastis51forever
Source avec Zip [PHP5] CLASSE DE LOG par malalam
XML AVEC SIMPLE XML par GillesWebmaster

Commentaires et avis

Commentaire de morpheus57 le 02/03/2007 19:12:54

Ah oui, j'ai oublié de préciser :
Il est possible d'ajouter un nouveau type d'erreur simplement en modifiant le fichier logConfig.xml.

Ensuite le nouveau type de log peu être directement instancié.

Commentaire de oox le 22/04/2007 12:56:20

Petite erreur dans ton code :
if (isset($this -> mail))

Cette ligne retournera toujours true.
=> if (! empty($this -> mail))

Sinon rien à redire, bon code.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Php et excel ???? [ par Adagyo ] Salut @ tous,Je cherche un moyen de faire communiquer le contenu d'une base MySQL avec un tableau Excel.J'ai pensé à passer par du XML (je fait une re Xml et Php [ par davdou ] Bonjour,Je travaille actuellement sur un LMS Open-Source (Ganesha).Un module d'importation de formation dans la plate-forme doit parser un fichier Xml xml dans un tableau php! SVG à la clé :) [ par jed35 ] Bonjour je débute en php et évidemment j'ai un probleme. Je cherche à placer des données (qui se trouvent dans un fichier xml) dans un tableau php.voi Ecrire dans un fichier .XML [ par ZogStriP ] Bonjour,Je suis le webmasteur du site : www.rubikscubor.fr.st et j'aimerais faire un formulaire qui me permettrais d'inscrire une liste de SpeedCubist xml(genere par excel) -> php [ par mic79 ] bjour,je dispose d'un fichier xml généré sous excel et je souhaite récupérer les données du fichier excel dans ma page php.connaissez vous une bibliot accents [ par Zan ] bonjour,j'ai un petit souci avec les accents :dans une chaine, j'ai un balise xml et son contenu.j'ecris cette chaine dans un fichier.php me perd les Téléchargement d'un Xml [ par Xilofeon ] BonjourVoila j'ai trouv&#233; des exemples de header sur le forum pour pouvoir demander &#224; l'utilisateur d'enregistr&#233; directement le fichier Lire fichier XML distant proteger par htaccess [ par jordangj ] Salut&nbsp;&#224; tousJe voudrais savoir comment je peut lire un fichier XML situer sur un serveur distant proteger pas un htaccess ?Une a Question XML [ par orsam ] Bonjour &#224; tous,Bon je commence juste &#224; "maitriser" le php, mais je cherche maintenant une petite doc ou un petit exemple, pour l'utilisation Besoin d'aide pour generer un Flux RSS [ par RuSSe_91 ] Salut tout le monde :) Je viens demander un coup de main pour g&#233;n&#233;rer un fichier RSS en XML. Mon site tourne sous mambo, e


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales