[Agora-commits] agora/ecrire/include/log inc_agoralog_factory.php, NONE, 1.1.2.1 AgoraLog.php, NONE, 1.1.2.1 log.conf-dist.php, NONE, 1.1.2.1

oliviermansour at adullact1.hosting.cri74.org oliviermansour at adullact1.hosting.cri74.org
Mer 21 Déc 11:58:12 CET 2005


Update of /cvsroot/agora/agora/ecrire/include/log
In directory adullact1:/tmp/cvs-serv2027/ecrire/include/log

Added Files:
      Tag: SPIP_AGORA_Charlotte
	inc_agoralog_factory.php AgoraLog.php log.conf-dist.php 
Log Message:
experimentation for a generic Log tools (already usefull for debugging)

--- NEW FILE: inc_agoralog_factory.php ---
<?php

//
// +----------------------------------------------------------------------+
// | Copyright (c) 2005 Clever Age - Olivier Mansour                                       |
// +----------------------------------------------------------------------+
// | Author: Olivier MANSOUR <omansour AT clever-age.com>                 |
// +----------------------------------------------------------------------+
//
// base class for loggin SPIP-Agora events
// $Id: inc_agoralog_factory.php,v 1.1.2.1 2005/12/21 10:58:10 oliviermansour Exp $


require_once('Log.php');
require_once('PEAR.php');


function &recuperer_instance_agoralog($typeLog) {
    
    static $logs;
    
    require_once(dirname(__FILE__)."/AgoraLog.php");
    
    if (!isset($logs[$typeLog]) or (is_null($typeLog))) {
        $log = &AgoraLog::factory($typeLog);
        $logs[$typeLog] = $log; 
    } else {
        $log = $logs[$typeLog];
    }
    
    if (PEAR::isError($log)) {
        die($log->getMessage()); // TODO raiseError retourne une PEAR::Error
    }
    
    return $log;

}
?>

--- NEW FILE: AgoraLog.php ---
<?php
//
// +----------------------------------------------------------------------+
// | Copyright (c) 2005 Clever Age - Olivier Mansour                      |
// +----------------------------------------------------------------------+
// | Author: Olivier MANSOUR <omansour AT clever-age.com>                 |
// +----------------------------------------------------------------------+
//
// base class for logging SPIP-Agora events
// $Id: AgoraLog.php,v 1.1.2.1 2005/12/21 10:58:10 oliviermansour Exp $

require_once ('Log.php');

class AgoraLog {
    
    // {{{ properties
    
    /**
     * Niveau de log pour cette instance
     * @var string 
     * @access  private
     */
    var $_logLevel;
    
    /**
     * objet de type log
     * @var Log
     * @access  private
     */
    var $_log;
    
    
    // }}}
    
    // {{{ constructor
    
    /**
     * AgoraLog constructor.
     *
     * @access public
     */

    function AgoraLog () {
    
    }
    
    // }}}
    
    // {{{ factory($typeLog)
    
    /**
     * AgoraLog Factory.
     *
     * @access public
     * @param string typeLog - soit un array de handler ou un niveau de log
     * @param string logLevel
     * @var array or string 
     */
    function &factory($typelog = null) {
        
        
        // configuration 
        if (file_exists(dirname(__FILE__)."/log.conf.php")) {
            include (dirname(__FILE__)."/log.conf.php");
        } else {
            include (dirname(__FILE__)."/log.conf-dist.php");
        } 
        
        if (is_null($typelog) or is_bool($typelog) ) $typelog = $agoraLogLevels_default; // les spécifs d'AGORA ;-)
        if (!is_array($agoraLogLevels[$typelog])) $typelog = $agoraLogLevels_default;
        //if (!defined($typelog)) $typelog = $agoraLogLevels_default;
        
        
        if (is_array ($typelog)) { // une suite de handler ... 
            die ('NOT IMPLEMENTED YET');  // TODO
        } else { // c une chaine : c'est un niveau de log
            if (count($agoraLogLevels[$typelog]) > 0) {
                $log = &Log::singleton('composite');
                foreach ($agoraLogLevels[$typelog] as $key_conf) { // pour chaque handler associé a un niveau de Log
                    // if ($agoraLogHandler[$key_conf]) {
                    if (array_key_exists($key_conf, $agoraLogHandler)) {
                        $$key_conf = &Log::singleton ($agoraLogHandler[$key_conf]['handler'], $agoraLogHandler[$key_conf]['name'], $agoraLogHandler[$key_conf]['ident'], $agoraLogHandler[$key_conf]['conf']);                        
                    } else {
                        $$key_conf = &Log::singleton ('null'); // logging off
                    }
                    $log->addChild ($$key_conf); // construction du log composite  
                }
            } else {                
                $log = &Log::singleton ('null'); // logging off
            }
        }
        
        // instanciation de mon objet 
        $AgoraLog = new AgoraLog();
        $AgoraLog->_logLevel = $typelog;
        $AgoraLog->_log = $log;
        
        // on renvoi l'objet
        return $AgoraLog;
    }
    
    // }}}
    
    
    
    /// {{{ AgoraLog_Message($message)
    
    /**
     * Log a message.
     *
     * @access public
     * @param string typeLog - soit un array de handler ou un niveau de log
     * @param string logLevel
     * @var array or string 
     */
    
    /*
    function AgoraLog ($message, $logLevel = null) {    
        if (is_null($logLevel)) $logLevel = $this->_logLevel; // le niveau de log par défaut
    */
    function AgoraLog_Message ($message, $loglevel = null) {
        if (is_null($loglevel)) $loglevel =  $this->_logLevel;
        $this->_log->log($message, $loglevel);
    }
    
    /// }}}
    
}

?>

--- NEW FILE: log.conf-dist.php ---
<?php
//
// +----------------------------------------------------------------------+
// | Copyright (c) 2005 Clever Age - Olivier Mansour                      |
// +----------------------------------------------------------------------+
// | Author: Olivier MANSOUR <omansour AT clever-age.com>                 |
// +----------------------------------------------------------------------+
//
// fichier de configuration d'example pour le log

// pour la documentation des handlers voir : www.indelible.org/pear/Log/guide.php

// $Id: log.conf-dist.php,v 1.1.2.1 2005/12/21 10:58:10 oliviermansour Exp $

require_once('PEAR.php');




$agoraLogHandler = array ( 
    'win' => array ('handler' => 'win',
            'name' => 'LogWindow',
            'ident' => 'AgoraLog', 
            'conf' => array (
            'title' => 'SPIP-Agora Logs')
            ),
    'spip_log' => array ('handler' => 'file', 
            'name' => (dirname(__FILE__)."/../../data/spip-agora.log"),
            'ident' => 'spip_log', 
            'conf' => array ()
    	   ),
);

$agoraLogLevels = array (
   
    PEAR_LOG_EMERG => array ('win'),
    PEAR_LOG_ALERT => array ('win'),
    PEAR_LOG_CRIT => array ('win'),
    PEAR_LOG_ERR => array ('win'),
    PEAR_LOG_WARNING => array ('win'),
    PEAR_LOG_NOTICE => array (),
    PEAR_LOG_INFO => array (),
    
    PEAR_LOG_DEBUG => array ('win'),
);
$agoraLogLevels_default = PEAR_LOG_NOTICE;




?>




Plus d'informations sur la liste de diffusion Agora-commits