Author: grobmeier
Date: Sun Aug 16 17:25:27 2009
New Revision: 804724

URL: http://svn.apache.org/viewvc?rev=804724&view=rev
Log:
removed deprecated flags, refactored initalization procedure

Modified:
    incubator/log4php/trunk/src/main/php/Logger.php
    incubator/log4php/trunk/src/site/apt/upgrading.apt
    incubator/log4php/trunk/src/test/php/LoggerTest.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=804724&r1=804723&r2=804724&view=diff
==============================================================================
--- incubator/log4php/trunk/src/main/php/Logger.php (original)
+++ incubator/log4php/trunk/src/main/php/Logger.php Sun Aug 16 17:25:27 2009
@@ -333,6 +333,9 @@
         * @static 
         */
        public static function getLogger($name) {
+               if(!self::isInitialized()) {
+                       self::initialize();
+               }
                return self::getHierarchy()->getLogger($name);
        }
        
@@ -520,118 +523,84 @@
        public function setParent(Logger $logger) {
                $this->parent = $logger;
        } 
-}
-
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-
-if (!defined('LOG4PHP_DEFAULT_INIT_OVERRIDE')) {
-       if (isset($_ENV['log4php.defaultInitOverride'])) {
-               /**
-                * @ignore
-                */
-               define('LOG4PHP_DEFAULT_INIT_OVERRIDE', 
-                       
LoggerOptionConverter::toBoolean($_ENV['log4php.defaultInitOverride'], false)
-               );
-       } elseif (isset($GLOBALS['log4php.defaultInitOverride'])) {
-               /**
-                * @ignore
-                */
-               define('LOG4PHP_DEFAULT_INIT_OVERRIDE', 
-                       
LoggerOptionConverter::toBoolean($GLOBALS['log4php.defaultInitOverride'], false)
-               );
-       } else {
-               /**
-                * Controls init execution
-                *
-                * With this constant users can skip the default init procedure 
that is
-                * called when this file is included.
-                *
-                * <p>If it is not user defined, log4php tries to autoconfigure 
using (in order):</p>
-                *
-                * - the <code>$_ENV['log4php.defaultInitOverride']</code> 
variable.
-                * - the <code>$GLOBALS['log4php.defaultInitOverride']</code> 
global variable.
-                * - defaults to <i>false</i>
-                *
-                * @var boolean
-                */
-               define('LOG4PHP_DEFAULT_INIT_OVERRIDE', false);
+       
+       /** the configurator class name */
+       private static $configurationClass = 'LoggerConfiguratorBasic';
+       /** the path to the configuration file */
+       private static $configurationFile = null;
+       
+       /**
+        * Configures Log4PHP.
+        * This method needs to be called before the first logging event
+        * has occured. If this methode is never called, the standard 
configuration
+        * takes place (@see LoggerConfiguratorBasic).
+        * If only the configuration file is given, the configurator class will
+        * be the XML Configurator or the INI Configurator, if no .xml ending
+        * could be determined.
+        * 
+        * If a custom configurator should be used, the configuration file
+        * is either null or the path to file the custom configurator uses.
+        * Make sure the configurator is already or can be loaded by PHP when 
necessary.
+        * 
+        * @param String $configurationFile the configuration file
+        * @param String $configurationClass the configurator class
+        */
+       public static function configure($configurationFile = null, 
+                                                                        
$configurationClass = null ) {
+               if($configurationClass === null && $configurationFile === null) 
{
+                       self::$configurationClass = 'LoggerConfiguratorBasic';
+                       return;
+               }
+                                                                               
+               if($configurationClass !== null) {
+                       self::$configurationFile = $configurationFile;
+                       self::$configurationClass = $configurationClass;
+                       return;
+               }
+               
+               if (strtolower(substr( $configurationFile, -4 )) == '.xml') {
+                       self::$configurationFile = $configurationFile;
+                       self::$configurationClass = 'LoggerConfiguratorXml';
+               } else {
+                       self::$configurationFile = $configurationFile;
+                       self::$configurationClass = 'LoggerConfiguratorIni';
+               }
        }
-}
-
-if (!defined('LOG4PHP_CONFIGURATION')) {
-       if (isset($_ENV['log4php.configuration'])) {
-               /**
-                * @ignore
-                */
-               define('LOG4PHP_CONFIGURATION', 
trim($_ENV['log4php.configuration']));
-       } else {
-               /**
-                * Configuration file.
-                *
-                * <p>This constant tells configurator classes where the 
configuration
-                * file is located.</p>
-                * <p>If not set by user, log4php tries to set it automatically 
using 
-                * (in order):</p>
-                *
-                * - the <code>$_ENV['log4php.configuration']</code> enviroment 
variable.
-                * - defaults to 'log4php.properties'.
-                *
-                * @var string
-                */
-               define('LOG4PHP_CONFIGURATION', 'log4php.properties');
+       
+       /**
+        * Returns the current configurator
+        * @return the configurator
+        */
+       public static function getConfigurationClass() {
+               return self::$configurationClass;
        }
-}
-
-if (!defined('LOG4PHP_CONFIGURATOR_CLASS')) {
-       if ( strtolower(substr( LOG4PHP_CONFIGURATION, -4 )) == '.xml') { 
-               /**
-                * @ignore
-                */
-               define('LOG4PHP_CONFIGURATOR_CLASS', 'LoggerConfiguratorXml');
-       } else {
-               /**
-                * Holds the configurator class name.
-                *
-                * <p>This constant is set with the fullname (path included but 
non the 
-                * .php extension) of the configurator class that init 
procedure will use.</p>
-                * <p>If not set by user, log4php tries to set it 
automatically.</p>
-                * <p>If {...@link LOG4PHP_CONFIGURATION} has '.xml' extension 
set the 
-                * constants to '{...@link LOG4PHP_DIR}/xml/{...@link 
LoggerConfiguratorXml}'.</p>
-                * <p>Otherwise set the constants to 
-                * '{...@link LOG4PHP_DIR}/{...@link 
LoggerConfiguratorIni}'.</p>
-                *
-                * <p><b>Security Note</b>: classfile pointed by this constant 
will be brutally
-                * included with a:
-                * <code>@include_once(LOG4PHP_CONFIGURATOR_CLASS . 
".php");</code></p>
-                *
-                * @var string
-                */
-               define('LOG4PHP_CONFIGURATOR_CLASS', 'LoggerConfiguratorIni');
+       
+       /**
+        * Returns the current configuration file
+        * @return the configuration file
+        */
+       public static function getConfigurationFile() {
+               return self::$configurationFile;
        }
-}
-
-if (!LOG4PHP_DEFAULT_INIT_OVERRIDE) {
-       if (!LoggerDefaultInit()) {
-//             LoggerLog::warn("LOG4PHP main() Default Init failed.");
+       
+       private static $initialized = false;
+       
+       /**
+        * Returns, true, if the log4php framework is already initialized
+        */
+       private static function isInitialized() {
+               return self::$initialized;
+       }
+       
+       /**
+        * 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;
+               return $result;
        }
-}
-
-/**
- * Default init procedure.
- *
- * <p>This procedure tries to configure the {...@link LoggerHierarchy} using 
the
- * configurator class defined via {...@link LOG4PHP_CONFIGURATOR_CLASS} that 
tries
- * to load the configurator file defined in {...@link LOG4PHP_CONFIGURATION}.
- * If something goes wrong a warn is raised.</p>
- * <p>Users can skip this procedure using {...@link 
LOG4PHP_DEFAULT_INIT_OVERRIDE}
- * constant.</p> 
- *
- * @return boolean
- */
-function LoggerDefaultInit() {
-       $configuratorClass = basename(LOG4PHP_CONFIGURATOR_CLASS);      
-       return call_user_func(array($configuratorClass, 'configure'), 
LOG4PHP_CONFIGURATION);
 }

Modified: incubator/log4php/trunk/src/site/apt/upgrading.apt
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/site/apt/upgrading.apt?rev=804724&r1=804723&r2=804724&view=diff
==============================================================================
--- incubator/log4php/trunk/src/site/apt/upgrading.apt (original)
+++ incubator/log4php/trunk/src/site/apt/upgrading.apt Sun Aug 16 17:25:27 2009
@@ -28,4 +28,6 @@
   * The LoggerManager class has been removed. Use Logger instead.
   
   * LoggerHierarchy is not a singleton anymore by default. 
+  
+  * Log4PHP logs to std out by default
   
\ No newline at end of file

Modified: incubator/log4php/trunk/src/test/php/LoggerTest.php
URL: 
http://svn.apache.org/viewvc/incubator/log4php/trunk/src/test/php/LoggerTest.php?rev=804724&r1=804723&r2=804724&view=diff
==============================================================================
--- incubator/log4php/trunk/src/test/php/LoggerTest.php (original)
+++ incubator/log4php/trunk/src/test/php/LoggerTest.php Sun Aug 16 17:25:27 2009
@@ -99,4 +99,27 @@
                $list = Logger::getCurrentLoggers();
                self::assertEquals('mylogger', $list[0]->getName());
        }
+       
+       public function testConfigure() {
+               Logger::configure();
+               self::assertEquals('LoggerConfiguratorBasic', 
Logger::getConfigurationClass());
+               self::assertEquals(null, Logger::getConfigurationFile());
+               
+               Logger::configure(null, 'MyLoggerClass');
+               self::assertEquals('MyLoggerClass', 
Logger::getConfigurationClass());
+               self::assertEquals(null, Logger::getConfigurationFile());
+               
+               Logger::configure('log4php.xml');
+               self::assertEquals('LoggerConfiguratorXml', 
Logger::getConfigurationClass());
+               self::assertEquals('log4php.xml', 
Logger::getConfigurationFile());
+               
+               Logger::configure('log4php.xml');
+               self::assertEquals('LoggerConfiguratorXml', 
Logger::getConfigurationClass());
+               self::assertEquals('log4php.xml', 
Logger::getConfigurationFile());
+               
+               Logger::configure('log4php.properties');
+               self::assertEquals('LoggerConfiguratorIni', 
Logger::getConfigurationClass());
+               self::assertEquals('log4php.properties', 
Logger::getConfigurationFile());
+               
+       }
 }


Reply via email to