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: * Returns the fully qualified class name of the class from which the logging
23: * request was issued.
24: *
25: * @package log4php
26: * @subpackage pattern
27: * @version $Revision: 1326626 $
28: * @since 2.3
29: */
30: class LoggerPatternConverterClass extends LoggerPatternConverter {
31:
32: /** Length to which to shorten the class name. */
33: private $length;
34:
35: /** Holds processed class names. */
36: private $cache = array();
37:
38: public function activateOptions() {
39: // Parse the option (desired output length)
40: if (isset($this->option) && is_numeric($this->option) && $this->option >= 0) {
41: $this->length = (integer) $this->option;
42: }
43: }
44:
45: public function convert(LoggerLoggingEvent $event) {
46: $name = $event->getLocationInformation()->getClassName();
47:
48: if (!isset($this->cache[$name])) {
49:
50: // If length is set return shortened class name
51: if (isset($this->length)) {
52: $this->cache[$name] = LoggerUtils::shortenClassName($name, $this->length);
53: }
54:
55: // If no length is specified return the full class name
56: else {
57: $this->cache[$name] = $name;
58: }
59: }
60:
61: return $this->cache[$name];
62: }
63: }
64: