LoggerLayoutPattern:
- greatly simplified rendering of exceptions
- added %exception specifier, along with %ex and %throwable
- more tests

git-svn-id: https://svn.apache.org/repos/asf/logging/log4php/trunk@1395470 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/php/layouts/LoggerLayoutPattern.php b/src/main/php/layouts/LoggerLayoutPattern.php
index f3e0fd9..0467d18 100644
--- a/src/main/php/layouts/LoggerLayoutPattern.php
+++ b/src/main/php/layouts/LoggerLayoutPattern.php
@@ -59,6 +59,7 @@
 		'env' => 'LoggerPatternConverterEnvironment',
 		
 		'ex' => 'LoggerPatternConverterThrowable',
+		'exception' => 'LoggerPatternConverterThrowable',
 		'throwable' => 'LoggerPatternConverterThrowable',
 		
 		'F' => 'LoggerPatternConverterFile',
diff --git a/src/main/php/pattern/LoggerPatternConverterThrowable.php b/src/main/php/pattern/LoggerPatternConverterThrowable.php
index 01b79f7..609836a 100644
--- a/src/main/php/pattern/LoggerPatternConverterThrowable.php
+++ b/src/main/php/pattern/LoggerPatternConverterThrowable.php
@@ -21,50 +21,20 @@
 /**

  * Returns the throwable information linked to the logging event, if any.

  * 

- * Option: the maximum stack trace lines to return (returns all if not set)

- * 

  * @package log4php

  * @subpackage pattern

  * @version $Revision$

  * @since 2.3

  */

 class LoggerPatternConverterThrowable extends LoggerPatternConverter {

-	

-	private $depth;

-	

-	public function activateOptions() {

-		if (isset($this->option) && is_numeric($op) && $op >= 0) {

-			$this->depth = (integer) $this->option;

-		}

-	}

-	

+

 	public function convert(LoggerLoggingEvent $event) {

-		

 		$info = $event->getThrowableInformation();

-		if ($info === null) {

-			return '';

+		if (isset($info)) {

+			$ex = $info->getThrowable();

+			return (string) $ex . PHP_EOL;

 		}

-		

-		$ex = $info->getThrowable();

-		

-		// Format exception to string

-		$strEx = get_class($ex) . ': "' . $ex->getMessage() . '"' . PHP_EOL;

-		$strEx .= 'at '. $ex->getFile() . ':' . $ex->getLine();

-		

-		// Add trace if required

-		if ($this->depth === null || $this->depth > 0) {

-			$trace = $ex->getTrace();

-			foreach($trace as $key => $item) {

-				if (isset($this->depth) && $key > $this->depth) {

-					break;

-				}

-				$strEx .= PHP_EOL . "#$key " . 

-					"{$item['file']}:{$item['line']} " .

-					"in {$item['class']}{$item['type']}{$item['function']}()"; 

-			}

-		}

-		

-		return $strEx;

+		return '';

 	}

 }

  
\ No newline at end of file
diff --git a/src/test/php/pattern/LoggerPatternConverterTest.php b/src/test/php/pattern/LoggerPatternConverterTest.php
index daad2e1..12ab854 100644
--- a/src/test/php/pattern/LoggerPatternConverterTest.php
+++ b/src/test/php/pattern/LoggerPatternConverterTest.php
@@ -17,7 +17,7 @@
  *

  * @category   tests

  * @package    log4php

- * @subpackage filters

+ * @subpackage pattern

  * @license    http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0

  * @version    $Revision$

  * @link       http://logging.apache.org/log4php

@@ -173,6 +173,28 @@
 

 		Logger::resetConfiguration();

 	}

+	

+	public function testLocation2() {

+		$config = LoggerTestHelper::getEchoPatternConfig("%location");

+		Logger::configure($config);

+	

+		// Test by capturing output. Logging methods of a Logger object must

+		// be used for the location info to be formed correctly.

+		ob_start();

+		$log = Logger::getLogger('foo');

+		$log->info('foo'); $line = __LINE__; // Do NOT move this to next line.

+		$actual = ob_get_contents();

+		ob_end_clean();

+	

+		$class = __CLASS__;

+		$func = __FUNCTION__;

+		$file = __FILE__;

+		

+		$expected = "$class.$func($file:$line)";

+		self::assertSame($expected, $actual);

+	

+		Logger::resetConfiguration();

+	}

 

 	public function testMessage() {

 		$expected = "This is a message.";