You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							240 lines
						
					
					
						
							6.8 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							240 lines
						
					
					
						
							6.8 KiB
						
					
					
				| <?php | |
| /** | |
|  * log4php is a PHP port of the log4j java logging package. | |
|  *  | |
|  * <p>This framework is based on log4j (see {@link http://jakarta.apache.org/log4j log4j} for details).</p> | |
|  * <p>Design, strategies and part of the methods documentation are developed by log4j team  | |
|  * (Ceki Gülcü as log4j project founder and  | |
|  * {@link http://jakarta.apache.org/log4j/docs/contributors.html contributors}).</p> | |
|  * | |
|  * <p>PHP port, extensions and modifications by VxR. All rights reserved.<br> | |
|  * For more information, please see {@link http://www.vxr.it/log4php/}.</p> | |
|  * | |
|  * <p>This software is published under the terms of the LGPL License | |
|  * a copy of which has been included with this distribution in the LICENSE file.</p> | |
|  *  | |
|  * @package log4php | |
|  * @subpackage layouts | |
|  */ | |
| 
 | |
| /** | |
|  * @ignore  | |
|  */ | |
| if (!defined('LOG4PHP_DIR')) define('LOG4PHP_DIR', dirname(__FILE__) . '/..'); | |
| 
 | |
| if (!defined('LOG4PHP_LINE_SEP')) { | |
|     if (substr(php_uname(), 0, 7) == "Windows") {  | |
|         /** | |
|          * @ignore | |
|          */ | |
|         define('LOG4PHP_LINE_SEP', "\r\n"); | |
|     } else { | |
|         /** | |
|          * @ignore | |
|          */ | |
|         define('LOG4PHP_LINE_SEP', "\n"); | |
|     } | |
| } | |
|   | |
| /** | |
|  */ | |
| require_once(LOG4PHP_DIR . '/LoggerLayout.php'); | |
|   | |
| /** | |
|  * String constant designating no time information. Current value of | |
|  * this constant is <b>NULL</b>. | |
|  */ | |
| define ('LOG4PHP_LOGGER_LAYOUT_NULL_DATE_FORMAT',   'NULL'); | |
| 
 | |
| /** | |
|  * String constant designating relative time. Current value of | |
|  * this constant is <b>RELATIVE</b>. | |
|  */ | |
| define ('LOG4PHP_LOGGER_LAYOUT_RELATIVE_TIME_DATE_FORMAT', 'RELATIVE'); | |
| 
 | |
| /** | |
|  * TTCC layout format consists of time, thread, category and nested | |
|  * diagnostic context information, hence the name. | |
|  *  | |
|  * <p>Each of the four fields can be individually enabled or | |
|  * disabled. The time format depends on the <b>DateFormat</b> used.</p> | |
|  * | |
|  * <p>If no dateFormat is specified it defaults to '%c'.  | |
|  * See php {@link PHP_MANUAL#date} function for details.</p> | |
|  * | |
|  * Params: | |
|  * - {@link $threadPrinting} (true|false) enable/disable pid reporting. | |
|  * - {@link $categoryPrefixing} (true|false) enable/disable logger category reporting. | |
|  * - {@link $contextPrinting} (true|false) enable/disable NDC reporting. | |
|  * - {@link $microSecondsPrinting} (true|false) enable/disable micro seconds reporting in timestamp. | |
|  * - {@link $dateFormat} (string) set date format. See php {@link PHP_MANUAL#date} function for details. | |
|  * | |
|  * @author VxR <vxr@vxr.it> | |
|  * @version $Revision: 1.1 $ | |
|  * @package log4php | |
|  * @subpackage layouts | |
|  */ | |
| class LoggerLayoutTTCC extends LoggerLayout { | |
| 
 | |
|     // Internal representation of options | |
|     var $threadPrinting    = true; | |
|     var $categoryPrefixing = true; | |
|     var $contextPrinting   = true; | |
|     var $microSecondsPrinting = true; | |
|      | |
|     /** | |
|      * @var string date format. See {@link PHP_MANUAL#strftime} for details | |
|      */ | |
|     var $dateFormat = '%c'; | |
| 
 | |
|     /** | |
|      * Constructor | |
|      * | |
|      * @param string date format | |
|      * @see dateFormat | |
|      */ | |
|     function LoggerLayoutTTCC($dateFormat = '') | |
|     { | |
|         if (!empty($dateFormat)) | |
|             $this->dateFormat = $dateFormat; | |
|         return; | |
|     } | |
| 
 | |
|     /** | |
|      * The <b>ThreadPrinting</b> option specifies whether the name of the | |
|      * current thread is part of log output or not. This is true by default. | |
|      */ | |
|     function setThreadPrinting($threadPrinting) | |
|     { | |
|          | |
|         $this->threadPrinting = is_bool($threadPrinting) ?  | |
|             $threadPrinting :  | |
|             (bool)(strtolower($threadPrinting) == 'true');  | |
|     } | |
| 
 | |
|     /** | |
|      * @return boolean Returns value of the <b>ThreadPrinting</b> option. | |
|      */ | |
|     function getThreadPrinting() { | |
|         return $this->threadPrinting; | |
|     } | |
| 
 | |
|     /** | |
|      * The <b>CategoryPrefixing</b> option specifies whether {@link Category} | |
|      * name is part of log output or not. This is true by default. | |
|      */ | |
|     function setCategoryPrefixing($categoryPrefixing) | |
|     { | |
|         $this->categoryPrefixing = is_bool($categoryPrefixing) ? | |
|             $categoryPrefixing : | |
|             (bool)(strtolower($categoryPrefixing) == 'true'); | |
|     } | |
| 
 | |
|     /** | |
|      * @return boolean Returns value of the <b>CategoryPrefixing</b> option. | |
|      */ | |
|     function getCategoryPrefixing() { | |
|         return $this->categoryPrefixing; | |
|     } | |
| 
 | |
|     /** | |
|      * The <b>ContextPrinting</b> option specifies log output will include | |
|      * the nested context information belonging to the current thread. | |
|      * This is true by default. | |
|      */ | |
|     function setContextPrinting($contextPrinting) { | |
|         $this->contextPrinting = is_bool($contextPrinting) ?  | |
|             $contextPrinting :  | |
|             (bool)(strtolower($contextPrinting) == 'true');  | |
|     } | |
| 
 | |
|     /** | |
|      * @return boolean Returns value of the <b>ContextPrinting</b> option. | |
|      */ | |
|     function getContextPrinting() | |
|     { | |
|         return $this->contextPrinting; | |
|     } | |
|      | |
|     /** | |
|      * The <b>MicroSecondsPrinting</b> option specifies if microseconds infos | |
|      * should be printed at the end of timestamp. | |
|      * This is true by default. | |
|      */ | |
|     function setMicroSecondsPrinting($microSecondsPrinting) { | |
|         $this->microSecondsPrinting = is_bool($microSecondsPrinting) ?  | |
|             $microSecondsPrinting :  | |
|             (bool)(strtolower($microSecondsPrinting) == 'true');  | |
|     } | |
| 
 | |
|     /** | |
|      * @return boolean Returns value of the <b>MicroSecondsPrinting</b> option. | |
|      */ | |
|     function getMicroSecondsPrinting() | |
|     { | |
|         return $this->microSecondsPrinting; | |
|     } | |
|      | |
|      | |
|     function setDateFormat($dateFormat) | |
|     { | |
|         $this->dateFormat = $dateFormat; | |
|     } | |
|      | |
|     /** | |
|      * @return string | |
|      */ | |
|     function getDateFormat() | |
|     { | |
|         return $this->dateFormat; | |
|     } | |
| 
 | |
|     /** | |
|      * In addition to the level of the statement and message, the | |
|      * returned string includes time, thread, category. | |
|      * <p>Time, thread, category are printed depending on options. | |
|      * | |
|      * @param LoggerLoggingEvent $event | |
|      * @return string | |
|      */ | |
|     function format($event) | |
|     { | |
|         $timeStamp = (float)$event->getTimeStamp(); | |
|         $format = strftime($this->dateFormat, (int)$timeStamp); | |
|          | |
|         if ($this->microSecondsPrinting) { | |
|             $usecs = round(($timeStamp - (int)$timeStamp) * 1000); | |
|             $format .= sprintf(',%03d', $usecs); | |
|         } | |
|              | |
|         $format .= ' '; | |
|          | |
|         if ($this->threadPrinting) | |
|             $format .= '['.getmypid().'] '; | |
|         | |
|         $level = $event->getLevel(); | |
|         $format .= $level->toString().' '; | |
|          | |
|         if($this->categoryPrefixing) { | |
|             $format .= $event->getLoggerName().' '; | |
|         } | |
|         | |
|         if($this->contextPrinting) { | |
|             $ndc = $event->getNDC(); | |
|             if($ndc != null) { | |
|     	        $format .= $ndc.' '; | |
|             } | |
|         } | |
|          | |
|         $format .= '- '.$event->getRenderedMessage(); | |
|         $format .= LOG4PHP_LINE_SEP; | |
|          | |
|         return $format; | |
|     } | |
| 
 | |
|     function ignoresThrowable() | |
|     { | |
|         return true; | |
|     } | |
| } | |
| ?>
 |