doConfigure($url, $hierarchy); } private function doConfigure($url, LoggerHierarchy $hierarchy) { $config = require $url; // set threshold if(isset($config['threshold'])) { $hierarchy->setThreshold(LoggerOptionConverter::toLevel($config['threshold'], LoggerLevel::getLevelAll())); } // parse and create appenders if(isset($config['appenders'])) { foreach($config['appenders'] as $appenderName => $appenderProperties) { $appender = LoggerAppenderPool::getAppenderFromPool($appenderName, $appenderProperties['class']); if($appender->requiresLayout()) { if(isset($appenderProperties['layout'])) { if(isset($appenderProperties['layout']['class']) and !empty($appenderProperties['layout']['class'])) { $layoutClass = $appenderProperties['layout']['class']; } else { $layoutClass = 'LoggerLayoutSimple'; } $layout = LoggerReflectionUtils::createObject($layoutClass); if($layout === null) { $layout = LoggerReflectionUtils::createObject('LoggerLayoutSimple'); } if($layout instanceof LoggerLayoutPattern) { $layout->setConversionPattern($appenderProperties['layout']['conversionPattern']); } $appender->setLayout($layout); } else { // TODO: throw exception? } } } } // parse and create root logger if(isset($config['rootLogger'])) { $rootLogger = $hierarchy->getRootLogger(); if(isset($config['rootLogger']['level'])) { $rootLogger->setLevel(LoggerOptionConverter::toLevel($config['rootLogger']['level'], LoggerLevel::getLevelDebug())); if(isset($config['rootLogger']['appenders'])) { foreach($config['rootLogger']['appenders'] as $appenderName) { $appender = LoggerAppenderPool::getAppenderFromPool($appenderName); if($appender !== null) { $rootLogger->addAppender($appender); } } } } } // parse and create loggers if(isset($config['loggers'])) { foreach($config['loggers'] as $loggerName => $loggerProperties) { if(is_string($loggerName)) { $logger = $hierarchy->getLogger($loggerName); if(isset($loggerProperties['level'])) { $logger->setLevel(LoggerOptionConverter::toLevel($loggerProperties['level'], LoggerLevel::getLevelDebug())); if(isset($loggerProperties['appenders'])) { foreach($loggerProperties['appenders'] as $appenderName) { $appender = LoggerAppenderPool::getAppenderFromPool($appenderName); if($appender !== null) { $logger->addAppender($appender); } } } } } else { // TODO: throw exception } } } return true; } }