Author: floriansemm
Date: Sat Mar 10 18:57:37 2012
New Revision: 1299253
URL: http://svn.apache.org/viewvc?rev=1299253&view=rev
Log:
LOG4PHP-141 - Allow setting of a default Renderer for all Classes
Added:
logging/log4php/trunk/src/main/php/renderers/LoggerRenderer.php
(contents, props changed)
- copied, changed from r1243083,
logging/log4php/trunk/src/main/php/renderers/LoggerRendererObject.php
logging/log4php/trunk/src/main/php/renderers/LoggerRendererObject.php
logging/log4php/trunk/src/test/php/renderers/LoggerRendererObjectTest.php
Modified:
logging/log4php/trunk/src/main/php/LoggerAutoloader.php
logging/log4php/trunk/src/main/php/LoggerThrowableInformation.php
logging/log4php/trunk/src/main/php/configurators/LoggerConfiguratorDefault.php
logging/log4php/trunk/src/main/php/renderers/LoggerRendererDefault.php
logging/log4php/trunk/src/main/php/renderers/LoggerRendererException.php
logging/log4php/trunk/src/main/php/renderers/LoggerRendererMap.php
logging/log4php/trunk/src/test/php/LoggerConfiguratorTest.php
logging/log4php/trunk/src/test/php/LoggerLoggingEventTest.php
logging/log4php/trunk/src/test/php/renderers/LoggerRendererMapTest.php
Modified: logging/log4php/trunk/src/main/php/LoggerAutoloader.php
URL:
http://svn.apache.org/viewvc/logging/log4php/trunk/src/main/php/LoggerAutoloader.php?rev=1299253&r1=1299252&r2=1299253&view=diff
==============================================================================
--- logging/log4php/trunk/src/main/php/LoggerAutoloader.php (original)
+++ logging/log4php/trunk/src/main/php/LoggerAutoloader.php Sat Mar 10 18:57:37
2012
@@ -125,7 +125,8 @@ class LoggerAutoloader {
'LoggerRendererDefault' =>
'/renderers/LoggerRendererDefault.php',
'LoggerRendererException' =>
'/renderers/LoggerRendererException.php',
'LoggerRendererMap' => '/renderers/LoggerRendererMap.php',
- 'LoggerRendererObject' => '/renderers/LoggerRendererObject.php',
+ 'LoggerRenderer' => '/renderers/LoggerRenderer.php',
+ 'LoggerRendererObject' =>
'/renderers/LoggerRendererObject.php',
);
/**
Modified: logging/log4php/trunk/src/main/php/LoggerThrowableInformation.php
URL:
http://svn.apache.org/viewvc/logging/log4php/trunk/src/main/php/LoggerThrowableInformation.php?rev=1299253&r1=1299252&r2=1299253&view=diff
==============================================================================
--- logging/log4php/trunk/src/main/php/LoggerThrowableInformation.php (original)
+++ logging/log4php/trunk/src/main/php/LoggerThrowableInformation.php Sat Mar
10 18:57:37 2012
@@ -61,12 +61,8 @@ class LoggerThrowableInformation {
*/
public function getStringRepresentation() {
if (!is_array($this->throwableArray)) {
- $renderer =
Logger::getHierarchy()->getRendererMap()->getByClassName(get_class($this->throwable));
+ $renderer = new LoggerRendererException();
- // TODO: why this?
- if ($renderer instanceof LoggerRendererDefault) {
- $renderer = new LoggerRendererException();
- }
$this->throwableArray = explode("\n",
$renderer->render($this->throwable));
}
Modified:
logging/log4php/trunk/src/main/php/configurators/LoggerConfiguratorDefault.php
URL:
http://svn.apache.org/viewvc/logging/log4php/trunk/src/main/php/configurators/LoggerConfiguratorDefault.php?rev=1299253&r1=1299252&r2=1299253&view=diff
==============================================================================
---
logging/log4php/trunk/src/main/php/configurators/LoggerConfiguratorDefault.php
(original)
+++
logging/log4php/trunk/src/main/php/configurators/LoggerConfiguratorDefault.php
Sat Mar 10 18:57:37 2012
@@ -223,26 +223,34 @@ class LoggerConfiguratorDefault implemen
foreach($config['renderers'] as $rendererConfig) {
$this->configureRenderer($hierarchy,
$rendererConfig);
}
+
+
}
}
private function configureRenderer(LoggerHierarchy $hierarchy, $config)
{
+ if (isset($config['defaultObjectRenderer'])) {
+ $objectRendererClass =
$config['defaultObjectRenderer'];
+ $this->existsRendererClass($objectRendererClass);
+ $objectRendererInstance = new $objectRendererClass;
+
$this->isRendererClassLoggerRenderer($objectRendererInstance,
$objectRendererClass);
+
+
$hierarchy->getRendererMap()->setDefaultObjectRenderer($objectRendererInstance);
+ return;
+ }
+
+
if (!isset($config['renderingClass'])) {
$this->warn("Rendering class not specified. Skipping
renderers definition.");
return;
}
$renderingClass = $config['renderingClass'];
- if (!class_exists($renderingClass)) {
- $this->warn("Nonexistant rendering class
[$renderingClass] specified. Skipping renderers definition.");
- return;
- }
+
+ $this->existsRendererClass($renderingClass);
$renderingClassInstance = new $renderingClass();
- if (!$renderingClassInstance instanceof LoggerRendererObject) {
- $this->warn("Invalid class [$renderingClass] given. Not
a valid LoggerRenderer class. Skipping renderers definition.");
- return;
- }
+ $this->isRendererClassLoggerRenderer($renderingClassInstance,
$renderingClass);
if (!isset($config['renderedClass'])) {
$this->warn("Rendered class not specified for rendering
Class [$renderingClass]. Skipping renderers definition.");
@@ -253,11 +261,25 @@ class LoggerConfiguratorDefault implemen
if (!class_exists($renderedClass)) {
$this->warn("Nonexistant rendered class
[$renderedClass] specified for renderer [$renderingClass]. Skipping renderers
definition.");
return;
- }
-
+ }
+
$hierarchy->getRendererMap()->addRenderer($renderedClass,
$renderingClassInstance);
}
+ private function existsRendererClass($renderingClass) {
+ if (!class_exists($renderingClass)) {
+ $this->warn("Nonexistant rendering class
[$renderingClass] specified. Skipping renderers definition.");
+ return;
+ }
+ }
+
+ private function isRendererClassLoggerRenderer($renderingClassInstance,
$renderingClass) {
+ if (!$renderingClassInstance instanceof LoggerRenderer) {
+ $this->warn("Invalid class [$renderingClass] given. Not
a valid LoggerRenderer class. Skipping renderers definition.");
+ return;
+ }
+ }
+
/**
* Configures an appender based on given config and saves it to
* {@link $appenders} array so it can be later linked to loggers.
Copied: logging/log4php/trunk/src/main/php/renderers/LoggerRenderer.php (from
r1243083, logging/log4php/trunk/src/main/php/renderers/LoggerRendererObject.php)
URL:
http://svn.apache.org/viewvc/logging/log4php/trunk/src/main/php/renderers/LoggerRenderer.php?p2=logging/log4php/trunk/src/main/php/renderers/LoggerRenderer.php&p1=logging/log4php/trunk/src/main/php/renderers/LoggerRendererObject.php&r1=1243083&r2=1299253&rev=1299253&view=diff
==============================================================================
--- logging/log4php/trunk/src/main/php/renderers/LoggerRendererObject.php
(original)
+++ logging/log4php/trunk/src/main/php/renderers/LoggerRenderer.php Sat Mar 10
18:57:37 2012
@@ -36,7 +36,7 @@
* @subpackage renderers
* @since 0.3
*/
-interface LoggerRendererObject {
+interface LoggerRenderer {
/**
* Render the entity passed as parameter as a String.
* @param mixed $o entity to render
Propchange: logging/log4php/trunk/src/main/php/renderers/LoggerRenderer.php
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: logging/log4php/trunk/src/main/php/renderers/LoggerRenderer.php
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: logging/log4php/trunk/src/main/php/renderers/LoggerRendererDefault.php
URL:
http://svn.apache.org/viewvc/logging/log4php/trunk/src/main/php/renderers/LoggerRendererDefault.php?rev=1299253&r1=1299252&r2=1299253&view=diff
==============================================================================
--- logging/log4php/trunk/src/main/php/renderers/LoggerRendererDefault.php
(original)
+++ logging/log4php/trunk/src/main/php/renderers/LoggerRendererDefault.php Sat
Mar 10 18:57:37 2012
@@ -37,7 +37,7 @@
* @subpackage renderers
* @since 0.3
*/
-class LoggerRendererDefault implements LoggerRendererObject {
+class LoggerRendererDefault implements LoggerRenderer {
/**
* Render objects by type casting
Modified:
logging/log4php/trunk/src/main/php/renderers/LoggerRendererException.php
URL:
http://svn.apache.org/viewvc/logging/log4php/trunk/src/main/php/renderers/LoggerRendererException.php?rev=1299253&r1=1299252&r2=1299253&view=diff
==============================================================================
--- logging/log4php/trunk/src/main/php/renderers/LoggerRendererException.php
(original)
+++ logging/log4php/trunk/src/main/php/renderers/LoggerRendererException.php
Sat Mar 10 18:57:37 2012
@@ -25,7 +25,7 @@
* @subpackage renderers
* @since 2.1
*/
-class LoggerRendererException implements LoggerRendererObject {
+class LoggerRendererException implements LoggerRenderer {
public function render($o) {
$strRep = 'Throwable('.get_class($o).'): '.$o->getMessage().'
in '.$o->getFile().' on line '.$o->getLine();
Modified: logging/log4php/trunk/src/main/php/renderers/LoggerRendererMap.php
URL:
http://svn.apache.org/viewvc/logging/log4php/trunk/src/main/php/renderers/LoggerRendererMap.php?rev=1299253&r1=1299252&r2=1299253&view=diff
==============================================================================
--- logging/log4php/trunk/src/main/php/renderers/LoggerRendererMap.php
(original)
+++ logging/log4php/trunk/src/main/php/renderers/LoggerRendererMap.php Sat Mar
10 18:57:37 2012
@@ -45,6 +45,12 @@ class LoggerRendererMap {
* @var LoggerDefaultRenderer
*/
private $defaultRenderer;
+
+ /**
+ *
+ * @var LoggerRendererObject
+ */
+ private $defaultObjectRenderer;
/**
* Constructor
@@ -52,6 +58,7 @@ class LoggerRendererMap {
public function __construct() {
$this->map = array();
$this->defaultRenderer = new LoggerRendererDefault();
+ $this->defaultObjectRenderer = new LoggerRendererObject();
}
/**
@@ -92,9 +99,9 @@ class LoggerRendererMap {
$renderer = $this->getByObject($o);
if($renderer !== null) {
return $renderer->render($o);
- } else {
- return null;
}
+
+ return $this->defaultObjectRenderer->render($o);
} else {
$renderer = $this->defaultRenderer;
return $renderer->render($o);
@@ -124,14 +131,13 @@ class LoggerRendererMap {
* @return LoggerRendererObject
*/
public function getByClassName($class) {
- $r = null;
for($c = $class; !empty($c); $c = get_parent_class($c)) {
$c = strtolower($c);
if(isset($this->map[$c])) {
return $this->map[$c];
}
}
- return $this->defaultRenderer;
+ return null;
}
public function clear() {
@@ -146,4 +152,12 @@ class LoggerRendererMap {
private function put($class, $or) {
$this->map[strtolower($class)] = $or;
}
+
+ public function setDefaultObjectRenderer($renderer) {
+ $this->defaultObjectRenderer = $renderer;
+ }
+
+ public function getDefaultObjectRenderer() {
+ return $this->defaultObjectRenderer;
+ }
}
Added: logging/log4php/trunk/src/main/php/renderers/LoggerRendererObject.php
URL:
http://svn.apache.org/viewvc/logging/log4php/trunk/src/main/php/renderers/LoggerRendererObject.php?rev=1299253&view=auto
==============================================================================
--- logging/log4php/trunk/src/main/php/renderers/LoggerRendererObject.php
(added)
+++ logging/log4php/trunk/src/main/php/renderers/LoggerRendererObject.php Sat
Mar 10 18:57:37 2012
@@ -0,0 +1,22 @@
+<?php
+
+/**
+ *
+ * @category tests
+ * @package log4php
+ * @subpackage renderers
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License,
Version 2.0
+ * @version SVN: $Id$
+ * @link http://logging.apache.org/log4php
+ *
+ */
+class LoggerRendererObject implements LoggerRenderer {
+ /* (non-PHPdoc)
+ * @see LoggerRenderer::render()
+ */
+ public function render($o) {
+ return print_r($o, true);
+ }
+}
+
+?>
\ No newline at end of file
Modified: logging/log4php/trunk/src/test/php/LoggerConfiguratorTest.php
URL:
http://svn.apache.org/viewvc/logging/log4php/trunk/src/test/php/LoggerConfiguratorTest.php?rev=1299253&r1=1299252&r2=1299253&view=diff
==============================================================================
--- logging/log4php/trunk/src/test/php/LoggerConfiguratorTest.php (original)
+++ logging/log4php/trunk/src/test/php/LoggerConfiguratorTest.php Sat Mar 10
18:57:37 2012
@@ -24,6 +24,12 @@
* @link http://logging.apache.org/log4php
*/
+
+class CostumDefaultRenderer implements LoggerRenderer {
+ public function render($o) { }
+}
+
+
/**
*
* @group configurators
@@ -451,4 +457,33 @@
)
));
}
+
+ public function
testConfigureRenderer_ShouldReturnBuildInObjectRenderer() {
+ Logger::configure(array(
+ 'rootLogger' => array(
+ 'appenders' => array('default')
+ ),
+ 'appenders' => array(
+ 'default' => array(
+ 'class' => 'LoggerAppenderEcho',
+ 'threshold' => 'INFO'
+ ),
+ )
+ ));
+
+ $actualDefaultObjectRenderer =
Logger::getHierarchy()->getRendererMap()->getDefaultObjectRenderer();
+
+ $this->assertTrue($actualDefaultObjectRenderer instanceof
LoggerRendererObject, 'build in object renderer');
+ }
+
+ public function
testConfigureRenderer_SetupCostumDefaultObjectRenderer() {
+ Logger::configure(array(
+ 'renderers' => array(
+ array('defaultObjectRenderer' =>
'CostumDefaultRenderer')
+ )));
+
+ $actualCostumObjectRenderer =
Logger::getHierarchy()->getRendererMap()->getDefaultObjectRenderer();
+
+ $this->assertNotNull($actualCostumObjectRenderer, 'costum
default object renderer');
+ }
}
\ No newline at end of file
Modified: logging/log4php/trunk/src/test/php/LoggerLoggingEventTest.php
URL:
http://svn.apache.org/viewvc/logging/log4php/trunk/src/test/php/LoggerLoggingEventTest.php?rev=1299253&r1=1299252&r2=1299253&view=diff
==============================================================================
--- logging/log4php/trunk/src/test/php/LoggerLoggingEventTest.php (original)
+++ logging/log4php/trunk/src/test/php/LoggerLoggingEventTest.php Sat Mar 10
18:57:37 2012
@@ -115,7 +115,7 @@ class LoggerLoggingEventTest extends PHP
public function testGetThrowableInformation2() {
$hierarchy = Logger::getHierarchy();
$root = $hierarchy->getRootLogger();
-
+
$a = new LoggerLoggingEventTestCaseAppender('A1');
$a->setLayout( new LoggerLoggingEventTestCaseLayout() );
$root->addAppender($a);
@@ -124,7 +124,7 @@ class LoggerLoggingEventTest extends PHP
$logger = $hierarchy->getLogger('test');
$logger->debug('test', $ex);
$hierarchy->shutdown();
-
+
$ti = self::$throwableInfo;
self::assertTrue($ti instanceof LoggerThrowableInformation);
Modified: logging/log4php/trunk/src/test/php/renderers/LoggerRendererMapTest.php
URL:
http://svn.apache.org/viewvc/logging/log4php/trunk/src/test/php/renderers/LoggerRendererMapTest.php?rev=1299253&r1=1299252&r2=1299253&view=diff
==============================================================================
--- logging/log4php/trunk/src/test/php/renderers/LoggerRendererMapTest.php
(original)
+++ logging/log4php/trunk/src/test/php/renderers/LoggerRendererMapTest.php Sat
Mar 10 18:57:37 2012
@@ -23,6 +23,12 @@
* @link http://logging.apache.org/log4php
*/
+class CostumObjectRenderer implements LoggerRenderer {
+ public function render($o) {
+ return true;
+ }
+}
+
class Fruit3 {
public $test1 = 'test1';
public $test2 = 'test2';
@@ -32,12 +38,16 @@ class Fruit3 {
class Fruit3Descendant extends Fruit3 {
}
-class FruitRenderer3 implements LoggerRendererObject {
+class FruitRenderer3 implements LoggerRenderer {
public function render($o) {
return $o->test1.','.$o->test2.','.$o->test3;
}
}
+class SampleObject {
+
+}
+
/**
* @group renderers
*/
@@ -95,4 +105,18 @@ class LoggerRendererMapTest extends PHPU
$expected = "WARN - test1,test2,test3" . PHP_EOL;
self::assertEquals($expected, $actual);
}
+
+ public function testGetByObject_CostumRendererShouldRenderObject() {
+ $sampleObject = new SampleObject();
+
+ Logger::configure(dirname(__FILE__).'/test4.properties');
+ $hierarchy = Logger::getHierarchy();
+
+ $map = $hierarchy->getRendererMap();
+ $map->setDefaultObjectRenderer(new CostumObjectRenderer());
+
+ $actual = $map->findAndRender($sampleObject);
+
+ $this->assertTrue($actual, 'costumobjectrenderer was rendered
object');
+ }
}
Added: logging/log4php/trunk/src/test/php/renderers/LoggerRendererObjectTest.php
URL:
http://svn.apache.org/viewvc/logging/log4php/trunk/src/test/php/renderers/LoggerRendererObjectTest.php?rev=1299253&view=auto
==============================================================================
--- logging/log4php/trunk/src/test/php/renderers/LoggerRendererObjectTest.php
(added)
+++ logging/log4php/trunk/src/test/php/renderers/LoggerRendererObjectTest.php
Sat Mar 10 18:57:37 2012
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @category tests
+ * @package log4php
+ * @subpackage renderers
+ * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License,
Version 2.0
+ * @version SVN: $Id$
+ * @link http://logging.apache.org/log4php
+ */
+
+class DefaultObject {
+ private $a;
+ protected $b;
+ public $c;
+}
+
+/**
+ * @group renderers
+ */
+class LoggerRendererObjectTest extends PHPUnit_Framework_TestCase {
+
+ public function testDoRender() {
+ $class = new DefaultObject();
+ $renderer = new LoggerRendererObject();
+ self::assertEquals(print_r($class, true),
$renderer->render($class));
+ }
+
+}