Overview

Packages

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

Classes

  • LoggerPatternConverterClass
  • LoggerPatternConverterCookie
  • LoggerPatternConverterDate
  • LoggerPatternConverterEnvironment
  • LoggerPatternConverterFile
  • LoggerPatternConverterLevel
  • LoggerPatternConverterLine
  • LoggerPatternConverterLiteral
  • LoggerPatternConverterLocation
  • LoggerPatternConverterLogger
  • LoggerPatternConverterMDC
  • LoggerPatternConverterMessage
  • LoggerPatternConverterMethod
  • LoggerPatternConverterNDC
  • LoggerPatternConverterNewLine
  • LoggerPatternConverterProcess
  • LoggerPatternConverterRelative
  • LoggerPatternConverterRequest
  • LoggerPatternConverterServer
  • LoggerPatternConverterSession
  • LoggerPatternConverterSessionID
  • LoggerPatternConverterSuperglobal
  • LoggerPatternConverterThrowable
  • 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:  * Returns the date/time of the logging request.
23:  * 
24:  * Option: the datetime format, as used by the date() function. If 
25:  * the option is not given, the default format 'c' will be used.
26:  * 
27:  * There are several "special" values which can be given for this option:
28:  * 'ISO8601', 'ABSOLUTE' and 'DATE'.
29:  * 
30:  * @package log4php
31:  * @subpackage pattern
32:  * @version $Revision: 1326626 $
33:  * @since 2.3
34:  */
35: class LoggerPatternConverterDate extends LoggerPatternConverter {
36: 
37:     const DATE_FORMAT_ISO8601 = 'c';
38:     
39:     const DATE_FORMAT_ABSOLUTE = 'H:i:s';
40:     
41:     const DATE_FORMAT_DATE = 'd M Y H:i:s.u';
42:     
43:     private $format = self::DATE_FORMAT_ISO8601;
44:     
45:     private $specials = array(
46:         'ISO8601' => self::DATE_FORMAT_ISO8601,
47:         'ABSOLUTE' => self::DATE_FORMAT_ABSOLUTE,
48:         'DATE' => self::DATE_FORMAT_DATE,
49:     );
50:     
51:     private $useLocalDate = false;
52:     
53:     public function activateOptions() {
54:         
55:         // Parse the option (date format)
56:         if (!empty($this->option)) {
57:             if(isset($this->specials[$this->option])) {
58:                 $this->format = $this->specials[$this->option];
59:             } else {
60:                 $this->format = $this->option;
61:             }
62:         }
63:         
64:         // Check whether the pattern contains milliseconds (u)
65:         if (preg_match('/(?<!\\\\)u/', $this->format)) {
66:             $this->useLocalDate = true;
67:         }
68:     }
69:     
70:     public function convert(LoggerLoggingEvent $event) {
71:         if ($this->useLocalDate) {
72:             return $this->date($this->format, $event->getTimeStamp());
73:         }
74:         return date($this->format, $event->getTimeStamp());
75:     }
76:     
77:     /**
78:      * Currently, PHP date() function always returns zeros for milliseconds (u)
79:      * on Windows. This is a replacement function for date() which correctly 
80:      * displays milliseconds on all platforms. 
81:      * 
82:      * It is slower than PHP date() so it should only be used if necessary. 
83:      */
84:     private function date($format, $utimestamp) {
85:         $timestamp = floor($utimestamp);
86:         $ms = floor(($utimestamp - $timestamp) * 1000);
87:         $ms = str_pad($ms, 3, '0', STR_PAD_LEFT);
88:     
89:         return date(preg_replace('`(?<!\\\\)u`', $ms, $format), $timestamp);
90:     }
91: }
92: 
Apache log4php API documentation generated by ApiGen 2.8.0