如何优雅地禁用PHP日志类

如何优雅地禁用PHP日志类,php,Php,所以我有了这个日志(实际上是一个包装器),它可以通过Log::getInstance()->Log_this或->Log_this等在整个应用程序中访问。ini中有一个配置参数可以关闭日志记录,但禁用日志包装器的实现并不完全正确: private function __construct() { if(config::get('logging_enabled')) { $this->logger = new Log(); }

所以我有了这个日志(实际上是一个包装器),它可以通过
Log::getInstance()->Log_this
->Log_this
等在整个应用程序中访问。ini中有一个配置参数可以关闭日志记录,但禁用日志包装器的实现并不完全正确:

private function __construct() {
    if(config::get('logging_enabled')) {
            $this->logger = new Log();
        } 
        //else?
}

public static function getInstance() {
    if(self::$_instance == NULL) {
        self::$_instance = new LogWrapper();
    }
    return self::$_instance;
}
调用
getInstance()->any_方法
委托给$logger实例,但将失败,因为$logger什么都不是

在这个类中,我在哪里可以停止这个流?这不是修改Log类的选项,我也不能遍历应用程序中对LogWrapper的每次调用。我似乎无法理解这一点,我知道一根巧妙的线就能解决它


谢谢你的帮助

为什么不实现一个不会记录任何内容的虚拟记录器类呢

然后,根据配置实例化
Log
或该虚拟无用类:

if(config::get('logging_enabled')) {
    $this->logger = new Log();
} 
else {
    $this->logger = new DummyLogThatDoesntLog();
}

是的,这是一个选项,但我不想创建另一个类;如果你不想更改代码的其他部分,我认为你没有太多的选择。是的,应用程序期望有一个具有这些方法的对象——我希望有一些技巧来伪造它!如果要这样做,请确保两个类都实现了一个接口,这样类结构就不会出现分歧。