Browse Source

Applied bugfix for http://forum.kohanaframework.org/discussion/11567/kohana-3-3-strtr-array-to-string-conversion-issue-in-kohana_log_writer/p1

Skamander 12 years ago
parent
commit
e823911496
1 changed files with 80 additions and 80 deletions
  1. 80 80
      php-kohana/system/classes/Kohana/Log/Writer.php

+ 80 - 80
php-kohana/system/classes/Kohana/Log/Writer.php

@@ -1,95 +1,95 @@
 <?php defined('SYSPATH') OR die('No direct script access.');
 /**
- * Log writer abstract class. All [Log] writers must extend this class.
- *
- * @package    Kohana
- * @category   Logging
- * @author     Kohana Team
- * @copyright  (c) 2008-2012 Kohana Team
- * @license    http://kohanaframework.org/license
- */
+* Log writer abstract class. All [Log] writers must extend this class.
+*
+* @package Kohana
+* @category Logging
+* @author Kohana Team
+* @copyright (c) 2008-2012 Kohana Team
+* @license http://kohanaframework.org/license
+*/
 abstract class Kohana_Log_Writer {
 
-	/**
-	 * @var  string  timestamp format for log entries.
-	 * 
-	 * Defaults to Date::$timestamp_format
-	 */
-	public static $timestamp;
+/**
+* @var string timestamp format for log entries.
+*
+* Defaults to Date::$timestamp_format
+*/
+public static $timestamp;
 
-	/**
-	 * @var  string  timezone for log entries
-	 * 
-	 * Defaults to Date::$timezone, which defaults to date_default_timezone_get()
-	 */
-	public static $timezone;
+/**
+* @var string timezone for log entries
+*
+* Defaults to Date::$timezone, which defaults to date_default_timezone_get()
+*/
+public static $timezone;
 
-	/**
-	 * Numeric log level to string lookup table.
-	 * @var array 
-	 */
-	protected $_log_levels = array(
-		LOG_EMERG   => 'EMERGENCY',
-		LOG_ALERT   => 'ALERT',
-		LOG_CRIT    => 'CRITICAL',
-		LOG_ERR     => 'ERROR',
-		LOG_WARNING => 'WARNING',
-		LOG_NOTICE  => 'NOTICE',
-		LOG_INFO    => 'INFO',
-		LOG_DEBUG   => 'DEBUG',
-	);
+/**
+* Numeric log level to string lookup table.
+* @var array
+*/
+protected $_log_levels = array(
+LOG_EMERG => 'EMERGENCY',
+LOG_ALERT => 'ALERT',
+LOG_CRIT => 'CRITICAL',
+LOG_ERR => 'ERROR',
+LOG_WARNING => 'WARNING',
+LOG_NOTICE => 'NOTICE',
+LOG_INFO => 'INFO',
+LOG_DEBUG => 'DEBUG',
+);
 
-	/**
-	 * @var  int  Level to use for stack traces
-	 */
-	public static $strace_level = LOG_DEBUG;
+/**
+* @var int Level to use for stack traces
+*/
+public static $strace_level = LOG_DEBUG;
 
-	/**
-	 * Write an array of messages.
-	 *
-	 *     $writer->write($messages);
-	 *
-	 * @param   array   $messages
-	 * @return  void
-	 */
-	abstract public function write(array $messages);
+/**
+* Write an array of messages.
+*
+* $writer->write($messages);
+*
+* @param array $messages
+* @return void
+*/
+abstract public function write(array $messages);
 
-	/**
-	 * Allows the writer to have a unique key when stored.
-	 *
-	 *     echo $writer;
-	 *
-	 * @return  string
-	 */
-	final public function __toString()
-	{
-		return spl_object_hash($this);
-	}
+/**
+* Allows the writer to have a unique key when stored.
+*
+* echo $writer;
+*
+* @return string
+*/
+final public function __toString()
+{
+return spl_object_hash($this);
+}
 
-	/**
-	 * Formats a log entry.
-	 * 
-	 * @param   array   $message
-	 * @param   string  $format
-	 * @return  string
-	 */
-	public function format_message(array $message, $format = "time --- level: body in file:line")
-	{
-		$message['time'] = Date::formatted_time('@'.$message['time'], Log_Writer::$timestamp, Log_Writer::$timezone, TRUE);
-		$message['level'] = $this->_log_levels[$message['level']];
+/**
+* Formats a log entry.
+*
+* @param array $message
+* @param string $format
+* @return string
+*/
+public function format_message(array $message, $format = "time --- level: body in file:line")
+{
+$message['time'] = Date::formatted_time('@'.$message['time'], Log_Writer::$timestamp, Log_Writer::$timezone, TRUE);
+$message['level'] = $this->_log_levels[$message['level']];
 
-		$string = strtr($format, $message);
+$string = strtr($format, array_filter($message, 'is_scalar'));
 
-		if (isset($message['additional']['exception']))
-		{
-			// Re-use as much as possible, just resetting the body to the trace
-			$message['body'] = $message['additional']['exception']->getTraceAsString();
-			$message['level'] = $this->_log_levels[Log_Writer::$strace_level];
+if (isset($message['additional']['exception']))
+{
+// Re-use as much as possible, just resetting the body to the trace
+$message['body'] = $message['additional']['exception']->getTraceAsString();
+$message['level'] = $this->_log_levels[Log_Writer::$strace_level];
 
-			$string .= PHP_EOL.strtr($format, $message);
-		}
+$string .= PHP_EOL.strtr($format, array_filter($message, 'is_scalar'));
+}
 
-		return $string;
-	}
+return $string;
+}
 
-} // End Kohana_Log_Writer
+}