/** * This method must work for the root category as well. * * @param array $props array of properties * @param Ideasa_Log4php_Logger $logger * @param string $optionKey * @param string $loggerName * @param string $value * @return Ideasa_Log4php_Logger */ private function parseCategory($props, Ideasa_Log4php_Logger $logger, $optionKey, $loggerName, $value) { // We must skip over ',' but not white space $st = explode(',', $value); // If value is not in the form ", appender.." or "", then we should set // the level of the loggeregory. if (!(empty($value) || @$value[0] == ',')) { // just to be on the safe side... if (count($st) == 0) { return; } $levelStr = current($st); // If the level value is inherited, set category level value to // null. We also check that the user has not specified inherited for the // root category. if ('INHERITED' == strtoupper($levelStr) || 'NULL' == strtoupper($levelStr)) { if ($loggerName == self::INTERNAL_ROOT_NAME) { // TODO: throw exception? "The root logger cannot be set to null." } else { $logger->setLevel(null); } } else { $logger->setLevel(Ideasa_Log4php_Helpers_LoggerOptionConverter::toLevel($levelStr, Ideasa_Log4php_LoggerLevel::getLevelDebug())); } } // TODO: removing should be done by the logger, if necessary and wanted // $logger->removeAllAppenders(); while ($appenderName = next($st)) { $appenderName = trim($appenderName); if (empty($appenderName)) { continue; } $appender = $this->parseAppender($props, $appenderName); if ($appender !== null) { $logger->addAppender($appender); } } }
/** * Setting a null value to the level of the root category may have catastrophic results. * @param Ideasa_Log4php_LoggerLevel $level */ public function setLevel($level) { if ($level != null) { parent::setLevel($level); } }