diff --git a/library/log4php/LoggerLevel.php b/library/log4php/LoggerLevel.php new file mode 100644 --- /dev/null +++ b/library/log4php/LoggerLevel.php @@ -0,0 +1,274 @@ +OFF, FATAL, ERROR, + * WARN, INFO, DEBUG and + * ALL. + * + *
The LoggerLevel class may be subclassed to define a larger + * level set.
+ * + * @version $Revision: 1379729 $ + * @package log4php + * @since 0.5 + */ +class LoggerLevel { + + const OFF = 2147483647; + const FATAL = 50000; + const ERROR = 40000; + const WARN = 30000; + const INFO = 20000; + const DEBUG = 10000; + const TRACE = 5000; + const ALL = -2147483647; + + /** Integer level value. */ + private $level; + + /** Contains a list of instantiated levels. */ + private static $levelMap; + + /** String representation of the level. */ + private $levelStr; + + /** + * Equivalent syslog level. + * @var integer + */ + private $syslogEquivalent; + + /** + * Constructor + * + * @param integer $level + * @param string $levelStr + * @param integer $syslogEquivalent + */ + private function __construct($level, $levelStr, $syslogEquivalent) { + $this->level = $level; + $this->levelStr = $levelStr; + $this->syslogEquivalent = $syslogEquivalent; + } + + /** + * Compares two logger levels. + * + * @param LoggerLevels $other + * @return boolean + */ + public function equals($other) { + if ($other instanceof LoggerLevel) { + if ($this->level == $other->level) { + return true; + } + } else { + return false; + } + } + + /** + * Returns an Off Level + * @return LoggerLevel + */ + public static function getLevelOff() { + if (!isset(self::$levelMap[LoggerLevel::OFF])) { + self::$levelMap[LoggerLevel::OFF] = new LoggerLevel(LoggerLevel::OFF, 'OFF', LOG_ALERT); + } + return self::$levelMap[LoggerLevel::OFF]; + } + + /** + * Returns a Fatal Level + * @return LoggerLevel + */ + public static function getLevelFatal() { + if (!isset(self::$levelMap[LoggerLevel::FATAL])) { + self::$levelMap[LoggerLevel::FATAL] = new LoggerLevel(LoggerLevel::FATAL, 'FATAL', LOG_ALERT); + } + return self::$levelMap[LoggerLevel::FATAL]; + } + + /** + * Returns an Error Level + * @return LoggerLevel + */ + public static function getLevelError() { + if (!isset(self::$levelMap[LoggerLevel::ERROR])) { + self::$levelMap[LoggerLevel::ERROR] = new LoggerLevel(LoggerLevel::ERROR, 'ERROR', LOG_ERR); + } + return self::$levelMap[LoggerLevel::ERROR]; + } + + /** + * Returns a Warn Level + * @return LoggerLevel + */ + public static function getLevelWarn() { + if (!isset(self::$levelMap[LoggerLevel::WARN])) { + self::$levelMap[LoggerLevel::WARN] = new LoggerLevel(LoggerLevel::WARN, 'WARN', LOG_WARNING); + } + return self::$levelMap[LoggerLevel::WARN]; + } + + /** + * Returns an Info Level + * @return LoggerLevel + */ + public static function getLevelInfo() { + if (!isset(self::$levelMap[LoggerLevel::INFO])) { + self::$levelMap[LoggerLevel::INFO] = new LoggerLevel(LoggerLevel::INFO, 'INFO', LOG_INFO); + } + return self::$levelMap[LoggerLevel::INFO]; + } + + /** + * Returns a Debug Level + * @return LoggerLevel + */ + public static function getLevelDebug() { + if (!isset(self::$levelMap[LoggerLevel::DEBUG])) { + self::$levelMap[LoggerLevel::DEBUG] = new LoggerLevel(LoggerLevel::DEBUG, 'DEBUG', LOG_DEBUG); + } + return self::$levelMap[LoggerLevel::DEBUG]; + } + + /** + * Returns a Trace Level + * @return LoggerLevel + */ + public static function getLevelTrace() { + if (!isset(self::$levelMap[LoggerLevel::TRACE])) { + self::$levelMap[LoggerLevel::TRACE] = new LoggerLevel(LoggerLevel::TRACE, 'TRACE', LOG_DEBUG); + } + return self::$levelMap[LoggerLevel::TRACE]; + } + + /** + * Returns an All Level + * @return LoggerLevel + */ + public static function getLevelAll() { + if (!isset(self::$levelMap[LoggerLevel::ALL])) { + self::$levelMap[LoggerLevel::ALL] = new LoggerLevel(LoggerLevel::ALL, 'ALL', LOG_DEBUG); + } + return self::$levelMap[LoggerLevel::ALL]; + } + + /** + * Return the syslog equivalent of this level as an integer. + * @return integer + */ + public function getSyslogEquivalent() { + return $this->syslogEquivalent; + } + + /** + * Returns true if this level has a higher or equal + * level than the level passed as argument, false + * otherwise. + * + * @param LoggerLevel $other + * @return boolean + */ + public function isGreaterOrEqual($other) { + return $this->level >= $other->level; + } + + /** + * Returns the string representation of this level. + * @return string + */ + public function toString() { + return $this->levelStr; + } + + /** + * Returns the string representation of this level. + * @return string + */ + public function __toString() { + return $this->toString(); + } + + /** + * Returns the integer representation of this level. + * @return integer + */ + public function toInt() { + return $this->level; + } + + /** + * Convert the input argument to a level. If the conversion fails, then + * this method returns the provided default level. + * + * @param mixed $arg The value to convert to level. + * @param LoggerLevel $default Value to return if conversion is not possible. + * @return LoggerLevel + */ + public static function toLevel($arg, $defaultLevel = null) { + if (is_int($arg)) { + switch ($arg) { + case self::ALL: + return self::getLevelAll(); + case self::TRACE: + return self::getLevelTrace(); + case self::DEBUG: + return self::getLevelDebug(); + case self::INFO: + return self::getLevelInfo(); + case self::WARN: + return self::getLevelWarn(); + case self::ERROR: + return self::getLevelError(); + case self::FATAL: + return self::getLevelFatal(); + case self::OFF: + return self::getLevelOff(); + default: + return $defaultLevel; + } + } else { + switch (strtoupper($arg)) { + case 'ALL': + return self::getLevelAll(); + case 'TRACE': + return self::getLevelTrace(); + case 'DEBUG': + return self::getLevelDebug(); + case 'INFO': + return self::getLevelInfo(); + case 'WARN': + return self::getLevelWarn(); + case 'ERROR': + return self::getLevelError(); + case 'FATAL': + return self::getLevelFatal(); + case 'OFF': + return self::getLevelOff(); + default: + return $defaultLevel; + } + } + } +}