Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 禁用或检测默认配置_Php_Log4php - Fatal编程技术网

Php 禁用或检测默认配置

Php 禁用或检测默认配置,php,log4php,Php,Log4php,我有一个php文件,其中包含一些项目中使用的类“FooClass”。我最近添加了使用log4net进行日志记录的方法,如下所示: private static function log($message,$level=0) { if(!isset(self::$logger)) { if(!class_exists("Logger")) return; self::$logger = Logger::getLogger("DBw");

我有一个php文件,其中包含一些项目中使用的类“FooClass”。我最近添加了使用log4net进行日志记录的方法,如下所示:

private static function log($message,$level=0)
{
    if(!isset(self::$logger))
    {
        if(!class_exists("Logger")) return;
        self::$logger = Logger::getLogger("DBw");
        if(!isset(self::$logger)) return;
    }
    //logging
}
一些使用FooClass的文件可以通过ising Logger::configure(“config.xml”)定义配置。 但是其他人没有定义它,在这种情况下,FooClass开始使用LoggerConfiguratorDefault,它将日志跟踪为“echo”。这是不能接受的

我想看看配置是否没有被其他文件定义,FooClass没有使用LoggerConfiguratorDefault登录


如何禁用LoggerConfiguratorDefault或检测其使用并从函数返回?

我当时处于相同的位置,但情况略有不同:如果我访问某个值,我的配置对象会记录,但如果我访问记录器配置文件的配置值,它将无法记录

Log4HP的类
Logger
具有私有静态属性
$initialized
,可通过私有静态方法
isInitialized()
访问该属性。我通过使用反射来访问静态属性的值来解决问题,如果结果为
false
,我将返回一个自行创建的
NullLogger extends Logger
,如果调用任何日志记录方法,它将不起任何作用

您的类可能也可以这样做,但更好的解决方案是确保log4ppp始终处于初始化状态


我建议您在项目Jira中创建一个记录单,以便更轻松地解决此问题。确实不需要将
Logger::isInitialized()
方法私有化。

我不知道什么是项目Jira。你能推荐我吗?您能给我一个解决方案的代码示例吗?我在这里引用了这个页面:好的,我冒昧地创建了一个问题通知单和修补程序: