/** * This method must work for the root category as well. * * @param array $props array of properties * @param Logger $logger * @param string $optionKey * @param string $loggerName * @param string $value * @return Logger */ private function parseCategory($props, 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(LoggerOptionConverter::toLevel($levelStr, 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); } } }
/** * Configures a logger. * * @param Logger $logger The logger to configure * @param array $config Logger configuration options. */ private function configureLogger(Logger $logger, $config) { $loggerName = $logger->getName(); // Set logger level if (isset($config['level'])) { $level = LoggerLevel::toLevel($config['level']); if (isset($level)) { $logger->setLevel($level); } else { $default = $logger->getLevel(); $this->warn("Invalid level value [{$config['level']}] specified for logger [{$loggerName}]. Ignoring level definition."); } } // Link appenders to logger if (isset($config['appenders'])) { foreach ($config['appenders'] as $appenderName) { if (isset($this->appenders[$appenderName])) { $logger->addAppender($this->appenders[$appenderName]); } else { $this->warn("Nonexistnant appender [{$appenderName}] linked to logger [{$loggerName}]."); } } } // Set logger additivity if (isset($config['additivity'])) { $additivity = LoggerOptionConverter::toBoolean($config['additivity'], null); if (is_bool($additivity)) { $logger->setAdditivity($additivity); } else { $this->warn("Invalid additivity value [{$config['additivity']}] specified for logger [{$loggerName}]. Ignoring additivity setting."); } } }
/** * It executes the bucket and logs its status * * @param ForgeUpgrade_Bucket $bucket * @param Logger $log */ public function runUpBucket($bucket, $log) { $this->db->logStart($bucket); // Prepare a specific logger that will be used to store all // Bucket traces into the database so the buckets and it's logs // will be linked $bucketAppender = $this->dbDriver->getBucketLoggerAppender($bucket); $log->addAppender($bucketAppender); $bucket->setLoggerParent($log); $log->info("Processing " . get_class($bucket)); if (!$this->options['core']['ignore_preup']) { $bucket->preUp(); $log->info("PreUp OK"); } $bucket->up(); $log->info("Up OK"); $bucket->postUp(); $log->info("PostUp OK"); $this->db->logEnd($bucket, ForgeUpgrade_Db::STATUS_SUCCESS); $log->removeAppender($bucketAppender); }
public function testMaxLevel() { $logger = new Logger('root'); $appender = new LoggerAppenderTest(); $logger->addAppender($appender); $logger->log(Logger::INFO, 1); $this->assertEquals(array(array(Logger::INFO, 1)), $appender->logs); $logger->setMaxLevel(Logger::INFO); $logger->log(Logger::INFO, 2); $logger->log(Logger::FATAL, 3); $logger->log(Logger::DEBUG, 4); $this->assertEquals(array(array(Logger::INFO, 1), array(Logger::INFO, 2), array(Logger::DEBUG, 4)), $appender->logs); return; }
/** * @private * Loads the configuration from the config file */ function _loadLoggerConfig() { // load the config file and see how many loggers are configued $config = new LoggerConfigLoader(); $loggers = $config->getConfiguredLoggers(); if (count($loggers) == 0) { // add a default logger $loggers["default"] = array("layout" => "%d %N - [%f:%l (%c:%F)] %m%n", "appender" => "stdout", "prio" => "debug"); } // loop through the loggers and configure them foreach ($config->getConfiguredLoggers() as $logger) { // get the logger config properties $properties = $config->getLoggerProperties($logger); // create the logger $layout = new PatternLayout($config->getLoggerLayout($logger)); $appenderObject = $this->createAppenderInstance($config->getLoggerAppender($logger), $layout, $properties); // create the logger, set the appender and it to the list $loggerObject = new Logger($properties); $loggerObject->addAppender($appenderObject); $this->addLogger($logger, $loggerObject); } }