diff --git a/library/log4php/layouts/LoggerLayoutPattern.php b/library/log4php/layouts/LoggerLayoutPattern.php new file mode 100644 --- /dev/null +++ b/library/log4php/layouts/LoggerLayoutPattern.php @@ -0,0 +1,171 @@ + 'LoggerPatternConverterLogger', + 'lo' => 'LoggerPatternConverterLogger', + 'logger' => 'LoggerPatternConverterLogger', + + 'C' => 'LoggerPatternConverterClass', + 'class' => 'LoggerPatternConverterClass', + + 'cookie' => 'LoggerPatternConverterCookie', + + 'd' => 'LoggerPatternConverterDate', + 'date' => 'LoggerPatternConverterDate', + + 'e' => 'LoggerPatternConverterEnvironment', + 'env' => 'LoggerPatternConverterEnvironment', + + 'ex' => 'LoggerPatternConverterThrowable', + 'exception' => 'LoggerPatternConverterThrowable', + 'throwable' => 'LoggerPatternConverterThrowable', + + 'F' => 'LoggerPatternConverterFile', + 'file' => 'LoggerPatternConverterFile', + + 'l' => 'LoggerPatternConverterLocation', + 'location' => 'LoggerPatternConverterLocation', + + 'L' => 'LoggerPatternConverterLine', + 'line' => 'LoggerPatternConverterLine', + + 'm' => 'LoggerPatternConverterMessage', + 'msg' => 'LoggerPatternConverterMessage', + 'message' => 'LoggerPatternConverterMessage', + + 'M' => 'LoggerPatternConverterMethod', + 'method' => 'LoggerPatternConverterMethod', + + 'n' => 'LoggerPatternConverterNewLine', + 'newline' => 'LoggerPatternConverterNewLine', + + 'p' => 'LoggerPatternConverterLevel', + 'le' => 'LoggerPatternConverterLevel', + 'level' => 'LoggerPatternConverterLevel', + + 'r' => 'LoggerPatternConverterRelative', + 'relative' => 'LoggerPatternConverterRelative', + + 'req' => 'LoggerPatternConverterRequest', + 'request' => 'LoggerPatternConverterRequest', + + 's' => 'LoggerPatternConverterServer', + 'server' => 'LoggerPatternConverterServer', + + 'ses' => 'LoggerPatternConverterSession', + 'session' => 'LoggerPatternConverterSession', + + 'sid' => 'LoggerPatternConverterSessionID', + 'sessionid' => 'LoggerPatternConverterSessionID', + + 't' => 'LoggerPatternConverterProcess', + 'pid' => 'LoggerPatternConverterProcess', + 'process' => 'LoggerPatternConverterProcess', + + 'x' => 'LoggerPatternConverterNDC', + 'ndc' => 'LoggerPatternConverterNDC', + + 'X' => 'LoggerPatternConverterMDC', + 'mdc' => 'LoggerPatternConverterMDC', + ); + + /** Maps conversion keywords to the relevant converter. */ + protected $converterMap = array(); + + /** + * Head of a chain of Converters. + * @var LoggerPatternConverter + */ + private $head; + + /** Returns the default converter map. */ + public static function getDefaultConverterMap() { + return self::$defaultConverterMap; + } + + /** Constructor. Initializes the converter map. */ + public function __construct() { + $this->converterMap = self::$defaultConverterMap; + } + + /** + * Sets the conversionPattern option. This is the string which + * controls formatting and consists of a mix of literal content and + * conversion specifiers. + * @param array $conversionPattern + */ + public function setConversionPattern($conversionPattern) { + $this->pattern = $conversionPattern; + } + + /** + * Processes the conversion pattern and creates a corresponding chain of + * pattern converters which will be used to format logging events. + */ + public function activateOptions() { + if (!isset($this->pattern)) { + throw new LoggerException("Mandatory parameter 'conversionPattern' is not set."); + } + + $parser = new LoggerPatternParser($this->pattern, $this->converterMap); + $this->head = $parser->parse(); + } + + /** + * Produces a formatted string as specified by the conversion pattern. + * + * @param LoggerLoggingEvent $event + * @return string + */ + public function format(LoggerLoggingEvent $event) { + $sbuf = ''; + $converter = $this->head; + while ($converter !== null) { + $converter->format($sbuf, $event); + $converter = $converter->next; + } + return $sbuf; + } +} \ No newline at end of file