You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4php-dev@logging.apache.org by gr...@apache.org on 2009/08/17 08:14:43 UTC

svn commit: r804867 - in /incubator/log4php/trunk/src: main/php/ main/php/configurators/ test/php/ test/php/configurators/

Author: grobmeier
Date: Mon Aug 17 06:14:42 2009
New Revision: 804867

URL: http://svn.apache.org/viewvc?rev=804867&view=rev
Log:
Refined initialization procedure. LoggerHierarchy is now injected into Configurator classes.

Modified:
    incubator/log4php/trunk/src/main/php/Logger.php
    incubator/log4php/trunk/src/main/php/LoggerConfigurator.php
    incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorBasic.php
    incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php
    incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php
    incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php
    incubator/log4php/trunk/src/test/php/LoggerTest.php
    incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorBasicTest.php
    incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorIniTest.php
    incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorPhpTest.php
    incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorXmlTest.php

Modified: incubator/log4php/trunk/src/main/php/Logger.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/Logger.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/Logger.php (original)
+++ incubator/log4php/trunk/src/main/php/Logger.php Mon Aug 17 06:14:42 2009
@@ -161,6 +161,14 @@
 	
 	private static $hierarchy;
 	
+	/**
+	 * Returns the hierarchy used by this Logger.
+	 * Caution: do not use this hierarchy unless you have called initialize().
+	 * To get Loggers, use the Logger::getLogger and Logger::getRootLogger methods
+	 * instead of operating on on the hierarchy directly.
+	 * 
+	 * @deprecated - will be moved to private
+	 */
 	public static function getHierarchy() {
 		if(!isset(self::$hierarchy)) {
 			self::$hierarchy = new LoggerHierarchy(new LoggerRoot());
@@ -356,7 +364,11 @@
 	 * @return boolean 
 	 */
 	public static function resetConfiguration() {
-		return self::getHierarchy()->resetConfiguration();	 
+		$result = self::getHierarchy()->resetConfiguration();
+		self::$initialized = false;
+		self::$configurationClass = 'LoggerConfiguratorBasic';
+		self::$configurationFile = null;
+		return $result;	 
 	}
 
 	/**
@@ -389,6 +401,9 @@
 	 * @static 
 	 */	   
 	public static function getRootLogger() {
+		if(!self::isInitialized()) {
+			self::initialize();
+		}
 		return self::getHierarchy()->getRootLogger();	  
 	}
 	
@@ -594,13 +609,12 @@
 	
 	/**
 	 * Initializes the log4php framework.
-	 * TODO: clean up
 	 * @return boolean
 	 */
 	public static function initialize() {
-		$configuratorClass = basename(self::$configurationClass);	
-		$result =  call_user_func(array($configuratorClass, 'configure'), self::$configurationFile);
 		self::$initialized = true;
+		$instance = LoggerReflectionUtils::createObject(self::$configurationClass);
+		$result = $instance->configure(self::getHierarchy(), self::$configurationFile);
 		return $result;
 	}
 }

Modified: incubator/log4php/trunk/src/main/php/LoggerConfigurator.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/LoggerConfigurator.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/LoggerConfigurator.php (original)
+++ incubator/log4php/trunk/src/main/php/LoggerConfigurator.php Mon Aug 17 06:14:42 2009
@@ -47,6 +47,6 @@
 	 *
 	 * @param string $url The URL to parse
 	 */
-	public static function configure($url = null);
+	public function configure(LoggerHierarchy $hierarchy, $url = null);
 	
 }

Modified: incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorBasic.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorBasic.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorBasic.php (original)
+++ incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorBasic.php Mon Aug 17 06:14:42 2009
@@ -35,8 +35,8 @@
 	 * 
 	 * @param string $url not used here
 	 */
-	public static function configure($url = null) {
-		$root = Logger::getRootLogger();
+	public function configure(LoggerHierarchy $hierarchy, $url = null) {
+		$root = $hierarchy->getRootLogger();
 		$appender = new LoggerAppenderConsole('A1');
 		$appender->setLayout( new LoggerLayoutTTCC() );
 		$appender->activateOptions();

Modified: incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php (original)
+++ incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorIni.php Mon Aug 17 06:14:42 2009
@@ -99,10 +99,8 @@
 	 * @return boolean configuration result
 	 * @static
 	 */
-	public static function configure($url = '') {
-		$configurator = new LoggerConfiguratorIni();
-		$repository = Logger::getLoggerRepository();
-		return $configurator->doConfigure($url, $repository);
+	public function configure(LoggerHierarchy $hierarchy, $url = '') {
+		return $this->doConfigure($url, $hierarchy);
 	}
 
 	/**

Modified: incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php (original)
+++ incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorPhp.php Mon Aug 17 06:14:42 2009
@@ -56,10 +56,8 @@
  */
 class LoggerConfiguratorPhp implements LoggerConfigurator {
 	
-	public static function configure($url = '') {
-		$configurator = new self();
-		$hierarchy = Logger::getLoggerRepository();
-		return $configurator->doConfigure($url, $hierarchy);
+	public function configure(LoggerHierarchy $hierarchy, $url = '') {
+		return $this->doConfigure($url, $hierarchy);
 	}
 	
 	private function doConfigure($url, LoggerHierarchy $hierarchy) {

Modified: incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php (original)
+++ incubator/log4php/trunk/src/main/php/configurators/LoggerConfiguratorXml.php Mon Aug 17 06:14:42 2009
@@ -119,10 +119,8 @@
      * @param string $url
      * @static
      */
-    public static function configure($url = '') {
-    	$configurator = new self(); 
-        $repository = Logger::getLoggerRepository();
-        return $configurator->doConfigure($url, $repository);
+    public function configure(LoggerHierarchy $hierarchy, $url = '') {
+        return $this->doConfigure($url, $hierarchy);
     }
     
     /**

Modified: incubator/log4php/trunk/src/test/php/LoggerTest.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/test/php/LoggerTest.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- incubator/log4php/trunk/src/test/php/LoggerTest.php (original)
+++ incubator/log4php/trunk/src/test/php/LoggerTest.php Mon Aug 17 06:14:42 2009
@@ -52,7 +52,7 @@
 	}
 	
 	public function testCanLogToAllLevels() {
-		LoggerConfiguratorIni::configure('LoggerTest.properties');
+		Logger::configure('LoggerTest.properties');
 		
 		$logger = Logger::getLogger('mylogger');
 		ob_start();
@@ -75,7 +75,7 @@
 	}
 	
 	public function testIsEnabledFor() {
-		LoggerConfiguratorIni::configure('LoggerTest.properties');
+		Logger::configure('LoggerTest.properties');
 		
 		$logger = Logger::getLogger('mylogger');
 		
@@ -94,13 +94,15 @@
 		
 		self::assertEquals(0, count(Logger::getCurrentLoggers()));
 		
-		LoggerConfiguratorIni::configure('LoggerTest.properties');
+		Logger::configure('LoggerTest.properties');
+		Logger::initialize();
 		self::assertEquals(1, count(Logger::getCurrentLoggers()));
 		$list = Logger::getCurrentLoggers();
 		self::assertEquals('mylogger', $list[0]->getName());
 	}
 	
 	public function testConfigure() {
+		Logger::resetConfiguration();
 		Logger::configure();
 		self::assertEquals('LoggerConfiguratorBasic', Logger::getConfigurationClass());
 		self::assertEquals(null, Logger::getConfigurationFile());

Modified: incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorBasicTest.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorBasicTest.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorBasicTest.php (original)
+++ incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorBasicTest.php Mon Aug 17 06:14:42 2009
@@ -26,7 +26,6 @@
 class LoggerConfiguratorBasicTest extends PHPUnit_Framework_TestCase {
         
 	protected function setUp() {
-	    LoggerConfiguratorBasic::configure();
 	}
         
 	protected function tearDown() {
@@ -65,14 +64,12 @@
 		// from previous runs. ResetConfiguration() only clears the appenders, it does
 		// not remove the categories!
 		Logger::resetConfiguration();
-		$hierarchy = Logger::getHierarchy();
-        foreach ($hierarchy->getCurrentLoggers() as $logger) {
+        foreach (Logger::getCurrentLoggers() as $logger) {
             self::assertEquals(0, count($logger->getAllAppenders()));
         }		
 
         // This on the other hand really removes the categories:
-        $hierarchy->clear(); 
-		self::assertEquals(0, count($hierarchy->getCurrentLoggers()));
-		self::assertEquals(0, count($hierarchy->getCurrentLoggers()));
+        Logger::clear(); 
+		self::assertEquals(0, count(Logger::getCurrentLoggers()));
 	}
 }

Modified: incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorIniTest.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorIniTest.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorIniTest.php (original)
+++ incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorIniTest.php Mon Aug 17 06:14:42 2009
@@ -34,29 +34,27 @@
 	}
         
 	public function testConfigure() {
-		LoggerConfiguratorIni::configure('configurators/test1.properties');
-		$hierarchy = Logger::getLoggerRepository();
-		$root = $hierarchy->getRootLogger();
+		Logger::configure('configurators/test1.properties');
+		$root = Logger::getRootLogger();
 		self::assertEquals(LoggerLevel::getLevelWarn(), $root->getLevel());
 		$appender = $root->getAppender("default");
 		self::assertTrue($appender instanceof LoggerAppenderEcho);
 		$layout = $appender->getLayout();
 		self::assertTrue($layout instanceof LoggerLayoutSimple);
 		
-		$logger = $hierarchy->getLogger('mylogger');
+		$logger = Logger::getLogger('mylogger');
 		self::assertEquals(LoggerLevel::getLevelInfo(), $logger->getLevel());
 		self::assertFalse($logger->getAdditivity());
 		
-		$logger2 = $hierarchy->getLogger('mylogger');
+		$logger2 = Logger::getLogger('mylogger');
 		$logger2->setAdditivity(true);
 		self::assertTrue($logger2->getAdditivity());
 		self::assertTrue($logger->getAdditivity());
 	}
 	
 	public function testConfigureWithRootCategory() {
-		LoggerConfiguratorIni::configure('configurators/test3.properties');
-		$hierarchy = Logger::getLoggerRepository();
-		$root = $hierarchy->getRootLogger();
+		Logger::configure('configurators/test3.properties');
+		$root = Logger::getRootLogger();
 		self::assertEquals(LoggerLevel::getLevelWarn(), $root->getLevel());
 		$appender = $root->getAppender("default");
 		self::assertTrue($appender instanceof LoggerAppenderEcho);
@@ -67,7 +65,8 @@
 	public function testConfigureWithoutIniFile() {
 	    $catchedException = null;
 	    try {
-	       LoggerConfiguratorIni::configure();
+	       Logger::configure(null,'LoggerConfiguratorIni');
+	       Logger::initialize();
 	       self::assertTrue(false);
 	    } catch (LoggerException $e) {
 	    	$catchedException = $e;
@@ -78,7 +77,8 @@
 	public function testConfigureWithEmptyIniFile() {
 		$catchedException = null;
 	    try {
-	       LoggerConfiguratorIni::configure('configurators/test2.properties');
+	       Logger::configure('configurators/test2.properties');
+	       Logger::initialize();
 	       self::assertTrue(false);
 	    } catch (LoggerException $e) {
 	    	$catchedException = $e;

Modified: incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorPhpTest.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorPhpTest.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorPhpTest.php (original)
+++ incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorPhpTest.php Mon Aug 17 06:14:42 2009
@@ -34,15 +34,14 @@
 	}
 	
 	public function testConfigure() {
-		LoggerConfiguratorPhp::configure('configurators/test1.php');
-		$hierarchy = Logger::getLoggerRepository();
-		$root = $hierarchy->getRootLogger();
+		Logger::configure('configurators/test1.php','LoggerConfiguratorPhp');
+		$root = Logger::getRootLogger();
 		self::assertEquals(LoggerLevel::getLevelWarn(), $root->getLevel());
 		$appender = $root->getAppender("default");
 		self::assertTrue($appender instanceof LoggerAppenderEcho);
 		$layout = $appender->getLayout();
 		self::assertTrue($layout instanceof LoggerLayoutSimple);
-		$logger = $hierarchy->getLogger('mylogger');
+		$logger = Logger::getLogger('mylogger');
 		self::assertEquals(LoggerLevel::getLevelInfo(), $logger->getLevel());
 	}
 }

Modified: incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorXmlTest.php
URL: http://svn.apache.org/viewvc/incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorXmlTest.php?rev=804867&r1=804866&r2=804867&view=diff
==============================================================================
--- incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorXmlTest.php (original)
+++ incubator/log4php/trunk/src/test/php/configurators/LoggerConfiguratorXmlTest.php Mon Aug 17 06:14:42 2009
@@ -34,16 +34,15 @@
 	}
         
 	public function testConfigure() {
-		LoggerConfiguratorXml::configure('configurators/test1.xml');
-		$hierarchy = Logger::getLoggerRepository();
-		$root = $hierarchy->getRootLogger();
+		Logger::configure('configurators/test1.xml');
+		$root = Logger::getRootLogger();
 		self::assertEquals(LoggerLevel::getLevelWarn(), $root->getLevel());
 		$appender = $root->getAppender("default");
 		self::assertTrue($appender instanceof LoggerAppenderEcho);
 		$layout = $appender->getLayout();
 		self::assertTrue($layout instanceof LoggerLayoutSimple);
 		
-		$logger = $hierarchy->getLogger('mylogger');
+		$logger = Logger::getLogger('mylogger');
 		self::assertEquals(LoggerLevel::getLevelInfo(), $logger->getLevel());
 	}
 }