gpt4 book ai didi

php - 如何优雅地禁用 PHP 日志记录类

转载 作者:行者123 更新时间:2023-12-04 06:28:08 25 4
gpt4 key购买 nike

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

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_method委托(delegate)给 $logger 实例,但会失败,因为 $logger 什么都不是。

我在哪里可以停止这种流动 在这个类中 ?修改 Log 类不是一个选项,我也不能通过应用程序中的每个调用来调用 LogWrapper。我似乎无法理解这一点,而且我知道一条巧妙放置的线可以解决它...

谢谢你的帮助!

最佳答案

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

然后,实例化 Log或那个无用的虚拟类,具体取决于配置:

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

关于php - 如何优雅地禁用 PHP 日志记录类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5771005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com