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.";