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());
+
+ }
}