You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
262 lines
7.6 KiB
262 lines
7.6 KiB
<?php
|
|
/**
|
|
* log4php is a PHP port of the log4j java logging package.
|
|
*
|
|
* <p>This framework is based on log4j (see {@link http://jakarta.apache.org/log4j log4j} for details).</p>
|
|
* <p>Design, strategies and part of the methods documentation are developed by log4j team
|
|
* (Ceki Gülcü as log4j project founder and
|
|
* {@link http://jakarta.apache.org/log4j/docs/contributors.html contributors}).</p>
|
|
*
|
|
* <p>PHP port, extensions and modifications by VxR. All rights reserved.<br>
|
|
* For more information, please see {@link http://www.vxr.it/log4php/}.</p>
|
|
*
|
|
* <p>This software is published under the terms of the LGPL License
|
|
* a copy of which has been included with this distribution in the LICENSE file.</p>
|
|
*
|
|
* @package log4php
|
|
*/
|
|
|
|
/**
|
|
* LOG4PHP_DIR points to the log4php root directory.
|
|
*
|
|
* If not defined it will be set automatically when the first package classfile
|
|
* is included
|
|
*
|
|
* @var string
|
|
*/
|
|
if (!defined('LOG4PHP_DIR')) define('LOG4PHP_DIR', dirname(__FILE__));
|
|
|
|
require_once(LOG4PHP_DIR . '/LoggerHierarchy.php');
|
|
|
|
/**
|
|
* Use the LoggerManager to get Logger instances.
|
|
*
|
|
* @author VxR <vxr@vxr.it>
|
|
* @version $Revision: 1.1 $
|
|
* @package log4php
|
|
* @see Logger
|
|
* @todo create a configurator selector
|
|
*/
|
|
class LoggerManager {
|
|
|
|
/**
|
|
* check if a given logger exists.
|
|
*
|
|
* @param string $name logger name
|
|
* @static
|
|
* @return boolean
|
|
*/
|
|
function exists($name)
|
|
{
|
|
$repository =& LoggerManager::getLoggerRepository();
|
|
return $repository->exists($name);
|
|
}
|
|
|
|
/**
|
|
* Returns an array this whole Logger instances.
|
|
*
|
|
* @static
|
|
* @see Logger
|
|
* @return array
|
|
*/
|
|
function getCurrentLoggers()
|
|
{
|
|
$repository =& LoggerManager::getLoggerRepository();
|
|
return $repository->getCurrentLoggers();
|
|
}
|
|
|
|
/**
|
|
* Returns the root logger.
|
|
*
|
|
* @static
|
|
* @return object
|
|
* @see LoggerRoot
|
|
*/
|
|
function &getRootLogger()
|
|
{
|
|
$repository =& LoggerManager::getLoggerRepository();
|
|
return $repository->getRootLogger();
|
|
}
|
|
|
|
/**
|
|
* Returns the specified Logger.
|
|
*
|
|
* @param string $name logger name
|
|
* @param LoggerFactory $factory a {@link LoggerFactory} instance or null
|
|
* @static
|
|
* @return Logger
|
|
*/
|
|
function &getLogger($name, $factory = null)
|
|
{
|
|
$repository =& LoggerManager::getLoggerRepository();
|
|
return $repository->getLogger($name, $factory);
|
|
}
|
|
|
|
/**
|
|
* Returns the LoggerHierarchy.
|
|
*
|
|
* @static
|
|
* @return LoggerHierarchy
|
|
*/
|
|
function &getLoggerRepository()
|
|
{
|
|
return LoggerHierarchy::singleton();
|
|
}
|
|
|
|
|
|
/**
|
|
* Destroy loggers object tree.
|
|
*
|
|
* @static
|
|
* @return boolean
|
|
*/
|
|
function resetConfiguration()
|
|
{
|
|
$repository =& LoggerManager::getLoggerRepository();
|
|
return $repository->resetConfiguration();
|
|
}
|
|
|
|
/**
|
|
* Does nothing.
|
|
* @static
|
|
*/
|
|
function setRepositorySelector($selector, $guard)
|
|
{
|
|
return;
|
|
}
|
|
|
|
/**
|
|
* Safely close all appenders.
|
|
* @static
|
|
*/
|
|
function shutdown()
|
|
{
|
|
$repository =& LoggerManager::getLoggerRepository();
|
|
return $repository->shutdown();
|
|
}
|
|
}
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// ---------------------------------------------------------------------------
|
|
// ---------------------------------------------------------------------------
|
|
|
|
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);
|
|
}
|
|
}
|
|
|
|
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');
|
|
}
|
|
}
|
|
|
|
if (!defined('LOG4PHP_CONFIGURATOR_CLASS')) {
|
|
if ( strtolower(substr( LOG4PHP_CONFIGURATION, -4 )) == '.xml') {
|
|
/**
|
|
* @ignore
|
|
*/
|
|
define('LOG4PHP_CONFIGURATOR_CLASS', LOG4PHP_DIR . '/xml/LoggerDOMConfigurator');
|
|
} 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 LoggerDOMConfigurator}'.</p>
|
|
* <p>Otherwise set the constants to
|
|
* '{@link LOG4PHP_DIR}/{@link LoggerPropertyConfigurator}'.</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', LOG4PHP_DIR . '/LoggerPropertyConfigurator');
|
|
}
|
|
}
|
|
|
|
if (!LOG4PHP_DEFAULT_INIT_OVERRIDE) {
|
|
if (!LoggerManagerDefaultInit())
|
|
LoggerLog::warn("LOG4PHP main() Default Init failed.");
|
|
}
|
|
|
|
/**
|
|
* 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 LoggerManagerDefaultInit()
|
|
{
|
|
$configuratorClass = basename(LOG4PHP_CONFIGURATOR_CLASS);
|
|
if (!class_exists($configuratorClass)) {
|
|
@include_once(LOG4PHP_CONFIGURATOR_CLASS . ".php");
|
|
}
|
|
if (class_exists($configuratorClass)) {
|
|
|
|
return call_user_func(array($configuratorClass, 'configure'), LOG4PHP_CONFIGURATION);
|
|
|
|
} else {
|
|
LoggerLog::warn("LoggerManagerDefaultInit() Configurator '{$configuratorClass}' doesnt exists");
|
|
return false;
|
|
}
|
|
}
|
|
|
|
?>
|