Overview

Packages

  • log4php
    • appenders
    • configurators
    • filters
    • helpers
    • layouts
    • pattern
    • renderers

Classes

  • LoggerLayoutHtml
  • LoggerLayoutPattern
  • LoggerLayoutSerialized
  • LoggerLayoutSimple
  • LoggerLayoutXml
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Licensed to the Apache Software Foundation (ASF) under one or more
  4:  * contributor license agreements.  See the NOTICE file distributed with
  5:  * this work for additional information regarding copyright ownership.
  6:  * The ASF licenses this file to You under the Apache License, Version 2.0
  7:  * (the "License"); you may not use this file except in compliance with
  8:  * the License.  You may obtain a copy of the License at
  9:  *
 10:  *     http://www.apache.org/licenses/LICENSE-2.0
 11:  *
 12:  * Unless required by applicable law or agreed to in writing, software
 13:  * distributed under the License is distributed on an "AS IS" BASIS,
 14:  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 15:  * See the License for the specific language governing permissions and
 16:  * limitations under the License.
 17:  *
 18:  * @package log4php
 19:  */
 20: 
 21: /**
 22:  * A flexible layout configurable with a pattern string.
 23:  * 
 24:  * Configurable parameters:
 25:  * 
 26:  * * converionPattern - A string which controls the formatting of logging 
 27:  *   events. See docs for full specification.
 28:  * 
 29:  * @package log4php
 30:  * @subpackage layouts
 31:  * @version $Revision: 1395470 $
 32:  */
 33: class LoggerLayoutPattern extends LoggerLayout {
 34:     
 35:     /** Default conversion pattern */
 36:     const DEFAULT_CONVERSION_PATTERN = '%date %-5level %logger %message%newline';
 37: 
 38:     /** Default conversion TTCC Pattern */
 39:     const TTCC_CONVERSION_PATTERN = '%d [%t] %p %c %x - %m%n';
 40: 
 41:     /** The conversion pattern. */ 
 42:     protected $pattern = self::DEFAULT_CONVERSION_PATTERN;
 43:     
 44:     /** Maps conversion keywords to the relevant converter (default implementation). */
 45:     protected static $defaultConverterMap = array(
 46:         'c' => 'LoggerPatternConverterLogger',
 47:         'lo' => 'LoggerPatternConverterLogger',
 48:         'logger' => 'LoggerPatternConverterLogger',
 49:         
 50:         'C' => 'LoggerPatternConverterClass',
 51:         'class' => 'LoggerPatternConverterClass',
 52:         
 53:         'cookie' => 'LoggerPatternConverterCookie',
 54:         
 55:         'd' => 'LoggerPatternConverterDate',
 56:         'date' => 'LoggerPatternConverterDate',
 57:         
 58:         'e' => 'LoggerPatternConverterEnvironment',
 59:         'env' => 'LoggerPatternConverterEnvironment',
 60:         
 61:         'ex' => 'LoggerPatternConverterThrowable',
 62:         'exception' => 'LoggerPatternConverterThrowable',
 63:         'throwable' => 'LoggerPatternConverterThrowable',
 64:         
 65:         'F' => 'LoggerPatternConverterFile',
 66:         'file' => 'LoggerPatternConverterFile',
 67:             
 68:         'l' => 'LoggerPatternConverterLocation',
 69:         'location' => 'LoggerPatternConverterLocation',
 70:         
 71:         'L' => 'LoggerPatternConverterLine',
 72:         'line' => 'LoggerPatternConverterLine',
 73:         
 74:         'm' => 'LoggerPatternConverterMessage',
 75:         'msg' => 'LoggerPatternConverterMessage',
 76:         'message' => 'LoggerPatternConverterMessage',
 77:         
 78:         'M' => 'LoggerPatternConverterMethod',
 79:         'method' => 'LoggerPatternConverterMethod',
 80:         
 81:         'n' => 'LoggerPatternConverterNewLine',
 82:         'newline' => 'LoggerPatternConverterNewLine',
 83:         
 84:         'p' => 'LoggerPatternConverterLevel',
 85:         'le' => 'LoggerPatternConverterLevel',
 86:         'level' => 'LoggerPatternConverterLevel',
 87:     
 88:         'r' => 'LoggerPatternConverterRelative',
 89:         'relative' => 'LoggerPatternConverterRelative',
 90:         
 91:         'req' => 'LoggerPatternConverterRequest',
 92:         'request' => 'LoggerPatternConverterRequest',
 93:         
 94:         's' => 'LoggerPatternConverterServer',
 95:         'server' => 'LoggerPatternConverterServer',
 96:         
 97:         'ses' => 'LoggerPatternConverterSession',
 98:         'session' => 'LoggerPatternConverterSession',
 99:         
100:         'sid' => 'LoggerPatternConverterSessionID',
101:         'sessionid' => 'LoggerPatternConverterSessionID',
102:     
103:         't' => 'LoggerPatternConverterProcess',
104:         'pid' => 'LoggerPatternConverterProcess',
105:         'process' => 'LoggerPatternConverterProcess',
106:         
107:         'x' => 'LoggerPatternConverterNDC',
108:         'ndc' => 'LoggerPatternConverterNDC',
109:             
110:         'X' => 'LoggerPatternConverterMDC',
111:         'mdc' => 'LoggerPatternConverterMDC',
112:     );
113: 
114:     /** Maps conversion keywords to the relevant converter. */
115:     protected $converterMap = array();
116:     
117:     /** 
118:      * Head of a chain of Converters.
119:      * @var LoggerPatternConverter 
120:      */
121:     private $head;
122: 
123:     /** Returns the default converter map. */
124:     public static function getDefaultConverterMap() {
125:         return self::$defaultConverterMap;
126:     }
127:     
128:     /** Constructor. Initializes the converter map. */
129:     public function __construct() {
130:         $this->converterMap = self::$defaultConverterMap;
131:     }
132:     
133:     /**
134:      * Sets the conversionPattern option. This is the string which
135:      * controls formatting and consists of a mix of literal content and
136:      * conversion specifiers.
137:      * @param array $conversionPattern
138:      */
139:     public function setConversionPattern($conversionPattern) {
140:         $this->pattern = $conversionPattern;
141:     }
142:     
143:     /**
144:      * Processes the conversion pattern and creates a corresponding chain of 
145:      * pattern converters which will be used to format logging events. 
146:      */
147:     public function activateOptions() {
148:         if (!isset($this->pattern)) {
149:             throw new LoggerException("Mandatory parameter 'conversionPattern' is not set.");
150:         }
151:         
152:         $parser = new LoggerPatternParser($this->pattern, $this->converterMap);
153:         $this->head = $parser->parse();
154:     }
155:     
156:     /**
157:      * Produces a formatted string as specified by the conversion pattern.
158:      *
159:      * @param LoggerLoggingEvent $event
160:      * @return string
161:      */
162:     public function format(LoggerLoggingEvent $event) {
163:         $sbuf = '';
164:         $converter = $this->head;
165:         while ($converter !== null) {
166:             $converter->format($sbuf, $event);
167:             $converter = $converter->next;
168:         }
169:         return $sbuf;
170:     }
171: }
Apache log4php API documentation generated by ApiGen 2.8.0