<?php 

/**
 * This is a log4php usage example file
 *
 * @version $Revision: 1.3 $
 * @author VxR <vxr@vxr.it>
 */

/**
 * Set LOG4PHP_DIR to Your log4php root dir or it will
 * be set automatically at the first require_once().
 * Here 'log4php' is an 'include_path' subdir.
 */
define('LOG4PHP_DIR''log4php');

/*
    1.  If you want to use a custom Configurator,
        set the LOG4PHP_CONFIGURATOR_CLASS constants to Your Configurator class file.
        The class name must have the same base name of the classfile.

        Ex: define('LOG4PHP_CONFIGURATOR_CLASS', '/my/path/LoggerMyConfigurator');
        
        Log4php will try to include '/my/path/LoggerMyConfigurator.php'
        and instantiate a 'LoggerMyConfigurator' class.

    2.  If you want to use a configuration file that's not the default,
        set the LOG4PHP_CONFIGURATION constants to Your configuration filename.
        
        Ex: define('LOG4PHP_CONFIGURATION', '/my/path/my_config.conf');
        
        Note that if config extension is NOT .xml and LOG4PHP_CONFIGURATOR_CLASS
        is not defined, the LoggerPropertyConfigurator will be used.  
        
    3.  If you want to bypass the initial configuration procedure, set the 
        'LOG4PHP_DEFAULT_INIT_OVERRIDE' to true.
        
        Ex: define('LOG4PHP_DEFAULT_INIT_OVERRIDE', true);
*/


require_once(LOG4PHP_DIR '/LoggerManager.php');
/* 
    Or You can use:
   
        require_once('/my/log4php/path/LoggerManager.php');
    
    and LOG4PHP_DIR will be automatically set to '/my/log4php/path'.
*/


class Test {

    var 
$logger;

    function 
Test()
    {
        
$this->logger =& LoggerManager::getLogger('Test');
    }
    
    function 
testLog()
    {
        
$this->logger->debug('this is a DEBUG log generated by Test::testLog() class');
        
$this->logger->info('this is an INFO log generated by Test::testLog() class');
        
$this->logger->warn('this is a WARN log generated by Test::testLog() class');
        
$this->logger->error('this is an ERROR log generated by Test::testLog() class');
        
$this->logger->fatal('this is a FATAL log generated by Test::testLog() class');                                
    }

}

class 
TestTest extends test {

    var 
$logger;
    
    function 
TestTest()
    {
        
$this->Test();    
        
$this->logger =& LoggerManager::getLogger('Test.Test');
    }
    
    function 
testLog()
    {
        
LoggerNDC::push('NDC generated by TestTest::testLog()');
    
        
$this->logger->debug('this is a DEBUG log generated by TestTest::testLog() class');
        
$this->logger->info('this is an INFO log generated by TestTest::testLog() class');
        
$this->logger->warn('this is a WARN log generated by TestTest::testLog() class');
        
$this->logger->error('this is an ERROR log generated by TestTest::testLog() class');
        
$this->logger->fatal('this is a FATAL log generated by TestTest::testLog() class');
        
        
LoggerNDC::pop();                                
    }



function 
Bar()
{
    
$logger =& LoggerManager::getLogger('bar');
    
/*
        note that the message here is an array
    */ 
    
$logger->debug(array('one''two''tree'));
    
$logger->info('this is an INFO log generated by Bar() function');
    
$logger->warn('this is a WARN log generated by Bar() function');
    
$logger->error('this is an ERROR log generated by Bar() function');
    
$logger->fatal('this is a FATAL log generated by Bar() function');
    
}

$logger =& LoggerManager::getLogger('main');

$logger->debug('this is a DEBUG log generated by main() function');
$logger->info('this is an INFO log generated by main() function');
$logger->warn('this is a WARN log generated by main() function');
$logger->error('this is an ERROR log generated by main() function');
$logger->fatal('this is a FATAL log generated by main() function');                                


$test = new Test();
$test->testLog();

$testTest = new TestTest();
$testTest->testLog();

Bar();

?>