| Code Coverage
| Classes and Traits | Functions and Methods | Lines
Total |  | 0.00% | 0 / 1 |  | 80.00% | 4 / 5 | CRAP |  | 94.12% | 16 / 17
LoggerLayoutPattern |  | 0.00% | 0 / 1 |  | 80.00% | 4 / 5 | 7.01 |  | 94.12% | 16 / 17
getDefaultConverterMap() |  | 100.00% | 1 / 1 | 1 |  | 100.00% | 1 / 1
__construct() |  | 100.00% | 1 / 1 | 1 |  | 100.00% | 2 / 2
setConversionPattern($conversionPattern) |  | 100.00% | 1 / 1 | 1 |  | 100.00% | 2 / 2
activateOptions() |  | 0.00% | 0 / 1 | 2.03 |  | 80.00% | 4 / 5
format(LoggerLoggingEvent $event) |  | 100.00% | 1 / 1 | 2 |  | 100.00% | 7 / 7

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 | }