You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ih...@apache.org on 2011/09/21 08:59:20 UTC

svn commit: r1173515 - in /logging/log4php/branches/experimental/config-adapters/src: main/php/ test/php/ test/php/filters/

Author: ihabunek
Date: Wed Sep 21 06:59:19 2011
New Revision: 1173515

URL: http://svn.apache.org/viewvc?rev=1173515&view=rev
Log:
More tests. Added test helper class.

Added:
    logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerTestHelper.php
Modified:
    logging/log4php/branches/experimental/config-adapters/src/main/php/LoggerConfigurator.php
    logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerConfiguratorTest.php
    logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterDenyAllTest.php
    logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterLevelMatchTest.php
    logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterStringMatchTest.php

Modified: logging/log4php/branches/experimental/config-adapters/src/main/php/LoggerConfigurator.php
URL: http://svn.apache.org/viewvc/logging/log4php/branches/experimental/config-adapters/src/main/php/LoggerConfigurator.php?rev=1173515&r1=1173514&r2=1173515&view=diff
==============================================================================
--- logging/log4php/branches/experimental/config-adapters/src/main/php/LoggerConfigurator.php (original)
+++ logging/log4php/branches/experimental/config-adapters/src/main/php/LoggerConfigurator.php Wed Sep 21 06:59:19 2011
@@ -45,10 +45,10 @@ class LoggerConfigurator
 	);
 	
 	/** Default configuration; used if no configuration file is provided. */
-	private $defaultConfiguration = array(
+	private static $defaultConfiguration = array(
         'threshold' => 'ALL',
         'rootLogger' => array(
-            'level' => 'INFO',
+            'level' => 'DEBUG',
             'appenders' => array('default'),
         ),
         'appenders' => array(
@@ -80,8 +80,7 @@ class LoggerConfigurator
 	 * 		configuration as an array. If not set, default configuration 
 	 * 		will be used.
 	 */
-	public function configure(LoggerHierarchy $hierarchy, $input = null)
-	{
+	public function configure(LoggerHierarchy $hierarchy, $input = null) {
 		$config = $this->parse($input);
 		$this->doConfigure($hierarchy, $config);
 	}
@@ -103,7 +102,7 @@ class LoggerConfigurator
 	{
 		// No input - use default configuration
 		if (!isset($input)) {
-			$config =  $this->defaultConfiguration;
+			$config = self::$defaultConfiguration;
 		}
 		
 		// Array input - contains configuration within the array
@@ -117,14 +116,14 @@ class LoggerConfigurator
 				$config = $this->parseFile($input);
 			} catch (LoggerException $e) {
 				$this->warn("Configuration failed. " . $e->getMessage() . " Using default configuration.");
-				$config = $this->defaultConfiguration;
+				$config = self::$defaultConfiguration;
 			}
 		}
 		
 		// Anything else is an error
 		else {
 			$this->warn("Invalid configuration param given. Reverting to default configuration.");
-			$config = $this->defaultConfiguration;
+			$config = self::$defaultConfiguration;
 		}
 		
 		return $config;
@@ -134,8 +133,8 @@ class LoggerConfigurator
 	 * Returns the default log4php configuration.
 	 * @return array
 	 */
-	public function getDefaultConfiguration() {
-		return $this->defaultConfiguration;
+	public static function getDefaultConfiguration() {
+		return self::$defaultConfiguration;
 	} 
 	
 	/**
@@ -262,6 +261,13 @@ class LoggerConfigurator
 			$this->createAppenderLayout($appender, $config['layout']);
 		}
 		
+		// Parse filters
+		if (isset($config['filters']) && is_array($config['filters'])) {
+			foreach($config['filters'] as $filterConfig) {
+				$this->createAppenderFilter($appender, $filterConfig);
+			}
+		}
+		
 		// Set options if any
 		if (isset($config['params'])) {
 			$this->setOptions($appender, $config['params']);
@@ -275,7 +281,7 @@ class LoggerConfigurator
 	/**
 	 * Parses layout config, creates the layout and links it to the appender.
 	 * @param LoggerAppender $appender
-	 * @param array $config Layout configuration options.
+	 * @param array $config Layout configuration.
 	 */
 	private function createAppenderLayout(LoggerAppender $appender, $config) {
 		$name = $appender->getName();
@@ -285,7 +291,7 @@ class LoggerConfigurator
 			return;
 		}
 		
-		$layout = new $class;
+		$layout = new $class();
 		if (!($layout instanceof LoggerLayout)) {
 			$this->warn("Invalid layout class [$class] sepcified for appender [$name]. Reverting to default layout.");
 			return;
@@ -296,10 +302,37 @@ class LoggerConfigurator
 		}
 		
 		$layout->activateOptions();
-		
 		$appender->setLayout($layout);
 	}
 	
+	/**
+	 * Parses filter config, creates the filter and adds it to the appender's 
+	 * filter chain.
+	 * @param LoggerAppender $appender
+	 * @param array $config Filter configuration.
+	 */
+	private function createAppenderFilter(LoggerAppender $appender, $config) {
+		$name = $appender->getName();
+		$class = $config['class'];
+		if (!class_exists($class)) {
+			$this->warn("Nonexistant filter class [$class] specified on appender [$name]. Skipping filter definition.");
+			return;
+		}
+	
+		$filter = new $class();
+		if (!($filter instanceof LoggerFilter)) {
+			$this->warn("Invalid filter class [$class] sepcified on appender [$name]. Skipping filter definition.");
+			return;
+		}
+	
+		if (isset($config['params'])) {
+			$this->setOptions($filter, $config['params']);
+		}
+	
+		$filter->activateOptions();
+		$appender->addFilter($filter);
+	}
+	
 	/** 
 	 * Configures the root logger
 	 * @see configureLogger() 

Modified: logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerConfiguratorTest.php
URL: http://svn.apache.org/viewvc/logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerConfiguratorTest.php?rev=1173515&r1=1173514&r2=1173515&view=diff
==============================================================================
--- logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerConfiguratorTest.php (original)
+++ logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerConfiguratorTest.php Wed Sep 21 06:59:19 2011
@@ -17,9 +17,8 @@
  		Logger::resetConfiguration();
  	}
  	
- 	/** Check proper default setup. */
+ 	/** Check default setup. */
  	public function testDefaultConfig() {
- 		// Uses default config file
  		Logger::configure();
  		
  		$actual = Logger::getCurrentLoggers();
@@ -79,7 +78,9 @@
 		 		 	'class' => 'LoggerAppenderEcho',
 		 		 	'layout' => array(
 		 		 		'class' => 'LoggerLayoutPattern',
-		 		 		'conversionPattern' => 'message: %m%n'
+		 		 		'params' => array(
+		 		 			'conversionPattern' => 'message: %m%n'
+		 		 		)
 		 			)
 		 		),
  			) 

Added: logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerTestHelper.php
URL: http://svn.apache.org/viewvc/logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerTestHelper.php?rev=1173515&view=auto
==============================================================================
--- logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerTestHelper.php (added)
+++ logging/log4php/branches/experimental/config-adapters/src/test/php/LoggerTestHelper.php Wed Sep 21 06:59:19 2011
@@ -0,0 +1,47 @@
+<?php
+
+/** A set of helper functions for running tests. */
+class LoggerTestHelper {
+	
+	public static function getTraceEvent($message = 'test') {
+		return new LoggerLoggingEvent(__CLASS__, new Logger("test"), LoggerLevel::getLevelTrace(), $message);
+	}
+	
+	public static function getDebugEvent($message = 'test') {
+		return new LoggerLoggingEvent(__CLASS__, new Logger("test"), LoggerLevel::getLevelDebug(), $message);
+	}
+	
+	public static function getInfoEvent($message = 'test') {
+		return new LoggerLoggingEvent(__CLASS__, new Logger("test"), LoggerLevel::getLevelInfo(), $message);
+	}
+	
+	public static function getWarnEvent($message = 'test') {
+		return new LoggerLoggingEvent(__CLASS__, new Logger("test"), LoggerLevel::getLevelWarn(), $message);
+	}
+	
+	public static function getErrorEvent($message = 'test') {
+		return new LoggerLoggingEvent(__CLASS__, new Logger("test"), LoggerLevel::getLevelError(), $message);
+	}
+	
+	public static function getFatalEvent($message = 'test') {
+		return new LoggerLoggingEvent(__CLASS__, new Logger("test"), LoggerLevel::getLevelFatal(), $message);
+	}
+	
+	public static function getAllEvents($message = 'test') {
+		return array(
+			self::getTraceEvent($message),
+			self::getDebugEvent($message),
+			self::getInfoEvent($message),
+			self::getWarnEvent($message),
+			self::getErrorEvent($message),
+			self::getFatalEvent($message),
+		);
+	}
+}
+
+
+
+
+
+
+?>
\ No newline at end of file

Modified: logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterDenyAllTest.php
URL: http://svn.apache.org/viewvc/logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterDenyAllTest.php?rev=1173515&r1=1173514&r2=1173515&view=diff
==============================================================================
--- logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterDenyAllTest.php (original)
+++ logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterDenyAllTest.php Wed Sep 21 06:59:19 2011
@@ -31,17 +31,41 @@ class LoggerFilterDenyAllTest extends PH
 	public function testDecide() {
 		$filter = new LoggerFilterDenyAll();
 		
-		$eventError = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelError(), "testmessage");
-		$eventDebug = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelDebug(), "testmessage");
-		$eventWarn = new LoggerLoggingEvent("LoggerAppenderEchoTest", new Logger("TEST"), LoggerLevel::getLevelWarn(), "testmessage");
+		$events = array(
+			LoggerTestHelper::getTraceEvent(),
+			LoggerTestHelper::getDebugEvent(),
+			LoggerTestHelper::getInfoEvent(),
+			LoggerTestHelper::getWarnEvent(),
+			LoggerTestHelper::getErrorEvent(),
+			LoggerTestHelper::getFatalEvent(),
+		);
 		
-		$result = $filter->decide($eventError);
-		self::assertEquals($result, LoggerFilter::DENY);
-		
-		$result = $filter->decide($eventDebug);
-		self::assertEquals($result, LoggerFilter::DENY);
-		
-		$result = $filter->decide($eventWarn);
-		self::assertEquals($result, LoggerFilter::DENY);
+		foreach($events as $event) {
+			$actual = $filter->decide($event);
+			self::assertEquals(LoggerFilter::DENY, $actual);
+		}
+    }
+    
+    public function testConfiguration() {
+    	$config = LoggerConfigurator::getDefaultConfiguration();
+    	$config['appenders']['default']['filters'] = array(
+    		array(
+    			'class' => 'LoggerFilterDenyAll'
+    		)
+    	);
+    	
+    	Logger::configure($config);
+    	$logger = Logger::getRootLogger();
+    	
+    	ob_start();
+    	$logger->trace('Test');
+    	$logger->debug('Test');
+    	$logger->info('Test');
+    	$logger->warn('Test');
+    	$logger->error('Test');
+    	$logger->fatal('Test');
+    	$actual = ob_get_clean();
+    	
+    	$this->assertEmpty($actual);
     }
 }

Modified: logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterLevelMatchTest.php
URL: http://svn.apache.org/viewvc/logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterLevelMatchTest.php?rev=1173515&r1=1173514&r2=1173515&view=diff
==============================================================================
--- logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterLevelMatchTest.php (original)
+++ logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterLevelMatchTest.php Wed Sep 21 06:59:19 2011
@@ -27,7 +27,7 @@
  * @group filters
  */
 class LoggerFilterLevelMatchTest extends PHPUnit_Framework_TestCase {
-        
+		
 	public function testDecideAcceptErrorLevel() {
 		$filter = new LoggerFilterLevelMatch();
 		$filter->setAcceptOnMatch(true);
@@ -45,9 +45,9 @@ class LoggerFilterLevelMatchTest extends
 		
 		$result = $filter->decide($eventWarn);
 		self::assertEquals($result, LoggerFilter::NEUTRAL);
-    }
-    
-    public function testDecideDenyErrorLevel() {
+	}
+	
+	public function testDecideDenyErrorLevel() {
 		$filter = new LoggerFilterLevelMatch();
 		$filter->setAcceptOnMatch("false");
 		$filter->setLevelToMatch(LoggerLevel::getLevelError());
@@ -64,9 +64,9 @@ class LoggerFilterLevelMatchTest extends
 		
 		$result = $filter->decide($eventWarn);
 		self::assertEquals($result, LoggerFilter::NEUTRAL);
-    }
-    
-    public function testDecideAcceptWarnLevel() {
+	}
+	
+	public function testDecideAcceptWarnLevel() {
 		$filter = new LoggerFilterLevelMatch();
 		$filter->setAcceptOnMatch("true");
 		$filter->setLevelToMatch(LoggerLevel::getLevelWarn());
@@ -83,9 +83,9 @@ class LoggerFilterLevelMatchTest extends
 		
 		$result = $filter->decide($eventWarn);
 		self::assertEquals($result, LoggerFilter::ACCEPT);
-    }
-    
-    public function testDecideDenyWarnLevel() {
+	}
+	
+	public function testDecideDenyWarnLevel() {
 		$filter = new LoggerFilterLevelMatch();
 		$filter->setAcceptOnMatch("false");
 		$filter->setLevelToMatch(LoggerLevel::getLevelWarn());
@@ -102,9 +102,9 @@ class LoggerFilterLevelMatchTest extends
 		
 		$result = $filter->decide($eventWarn);
 		self::assertEquals($result, LoggerFilter::DENY);
-    }
-    
-    public function testDecideDenyDebugLevel() {
+	}
+	
+	public function testDecideDenyDebugLevel() {
 		$filter = new LoggerFilterLevelMatch();
 		$filter->setAcceptOnMatch("false");
 		$filter->setLevelToMatch(LoggerLevel::getLevelDebug());
@@ -121,5 +121,42 @@ class LoggerFilterLevelMatchTest extends
 		
 		$result = $filter->decide($eventWarn);
 		self::assertEquals($result, LoggerFilter::NEUTRAL);
-    }
+	}
+	
+	public function testConfiguration() {
+		$config = LoggerConfigurator::getDefaultConfiguration();
+		
+		// Add filters to accept debug and deny all others
+		$config['appenders']['default']['filters'] = array(
+			array(
+				'class' => 'LoggerFilterLevelMatch',
+				'params' => array(
+					'levelToMatch' => 'error',
+					'acceptOnMatch' => true
+				)
+			),
+			array(
+				'class' => 'LoggerFilterDenyAll',
+			)
+		);
+		 
+		Logger::configure($config);
+		$logger = Logger::getRootLogger();
+		 
+		ob_start();
+		$logger->trace('Test');
+		$logger->debug('Test');
+		$logger->info('Test');
+		$logger->warn('Test');
+		$logger->error('Test');
+		$logger->fatal('Test');
+		$actual = ob_get_clean();
+		
+		var_dump($actual);
+		
+		$this->assertEmpty($actual);
+	}
+	
+	
+	
 }

Modified: logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterStringMatchTest.php
URL: http://svn.apache.org/viewvc/logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterStringMatchTest.php?rev=1173515&r1=1173514&r2=1173515&view=diff
==============================================================================
--- logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterStringMatchTest.php (original)
+++ logging/log4php/branches/experimental/config-adapters/src/test/php/filters/LoggerFilterStringMatchTest.php Wed Sep 21 06:59:19 2011
@@ -23,6 +23,8 @@
  * @link       http://logging.apache.org/log4php
  */
 
+require dirname(__FILE__) . '/../LoggerTestHelper.php';
+
 /**
  * @group filters
  */