<?php 
declare(strict_types=1); 
 
require_once 'autoloader.php'; 
require_once 'TestClass.php'; 
 
use Psr\Log\LogLevel; 
use Psr\Log\NullLogger; 
use SKien\XLogger\ChromePHPLogger; 
use SKien\XLogger\FileLogger; 
use SKien\XLogger\FirePHPLogger; 
use SKien\XLogger\XLogger; 
use SKien\XLogger\XMLLogger; 
 
$strMessage = ''; 
$strLink = ''; 
$logger = new NullLogger(); 
$strLogger = isset($_GET['logger']) ? strtolower($_GET['logger']) : 'log'; 
$strLevel = isset($_GET['level']) ? strtolower($_GET['level']) : 'dev'; 
$level = LogLevel::DEBUG; 
switch ($strLevel) { 
    case 'deploy': 
        $level = LogLevel::WARNING; 
        $strMessage = '<br/>Log-Level for Deployment Environment'; 
        break; 
    case 'test': 
        $level = LogLevel::INFO; 
        $strMessage = '<br/>Log-Level for Test Environment'; 
        break; 
    case 'dev': 
        $level = LogLevel::DEBUG; 
        $strMessage = '<br/>Log-Level for Development Environment'; 
        break; 
} 
switch ($strLogger) { 
    case 'log': 
    case 'csv': 
    case 'txt': 
        $logger = new FileLogger($level); 
        $logger->setUser('S./Kien'); 
        $logger->setFullpath('test_{date}_{name}.' . $strLogger); 
        $logger->setOptions(XLogger::LOG_BT | XLogger::LOG_USER); 
        $strMessage = 'Logger Output written to ' . $logger->getFilename() . $strMessage; 
        break; 
    case 'xml': 
        $logger = new XMLLogger($level); 
        $logger->setFullpath('test_{month}.xml'); 
        $logger->setXSLFile('XMLLogger.xsl'); 
        $logger->setOptions(XLogger::LOG_BT | XLogger::LOG_USER | XLogger::LOG_UA); 
        $logger->setUser('SKien'); 
        $strMessage = 'Logger Output written to ' . $logger->getFilename() . $strMessage; 
        $strLink = '<a target="_blank" href="' . $logger->getFilename() . '">View Log</a>'; 
        break; 
    case 'firefox': 
        $logger = new FirePHPLogger($level); 
        $strMessage = 'Logger Output sent to FirePHP Console' . $strMessage; 
        break; 
    case 'chrome': 
        $logger = new ChromePHPLogger($level); 
        $strMessage = 'Logger Output sent to Chrome Console' . $strMessage; 
        break; 
} 
 
$logger->error('bad conditions :-(', ['more' => 'just more Information']); 
$logger->info('some informations'); 
$logger->alert('the bell is ringing...' . PHP_EOL . '... its 5 to 12!'); 
$logger->warning('something gone wrong ;-)'); 
 
$oTest = new TestClass(); 
 
// nothing will be logged since setLogger() was not called so far... but dont causes any error!'); 
$oTest->doSomething(); 
 
$oTest->setLogger($logger); 
$oTest->doSomething(); 
$oTest->causeException(); 
?> 
<!DOCTYPE html> 
<html> 
<body> 
    <h1>Logger - Example</h1> 
    <p><?php echo $strMessage;?></p> 
    <p><?php echo $strLink;?></p> 
    <form action="XLogTest.php" method="get"> 
    <label for="logger">Output to:</label> 
    <select name="logger" id ="logger"> 
        <option <?php echo $strLogger == 'log' ? 'selected' : ''; ?> value="log">LOG File</option> 
        <option <?php echo $strLogger == 'csv' ? 'selected' : ''; ?> value="csv">CSV File</option> 
        <option <?php echo $strLogger == 'txt' ? 'selected' : ''; ?> value="txt">TXT File</option> 
        <option <?php echo $strLogger == 'xml' ? 'selected' : ''; ?> value="xml">XML File</option> 
        <option <?php echo $strLogger == 'firefox' ? 'selected' : ''; ?> value="firefox">FirePHP-Console</option> 
        <option <?php echo $strLogger == 'chrome' ? 'selected' : ''; ?> value="chrome">Chrome-Console</option> 
        <option <?php echo $strLogger == 'null' ? 'selected' : ''; ?> value="null">Null-Logger</option> 
    </select><br/> 
    <label for="level">Environment:</label> 
    <select id="level" name="level"> 
        <option <?php echo $strLevel == 'dev' ? 'selected' : ''; ?> value="dev">Development</option> 
        <option <?php echo $strLevel == 'test' ? 'selected' : ''; ?> value="test">Test</option> 
        <option <?php echo $strLevel == 'deploy' ? 'selected' : ''; ?> value="deploy">Deploy</option> 
    </select><br/> 
    <button type="submit">Reload</button> 
    </form> 
</body> 
</html> 
 
 |