1

我有一个 PHP 应用程序,其中包含多个模块和每个模块中的各种设置。我想使用 log4php 启用日志记录,但每个单独的模块都有不同的设置(即日志级别、日志文件等)。其中一些设置需要由最终用户(日志级别)动态更改,我想将这些属性存储在数据库中。

现在我可以动态设置日志级别。我无法确定如何动态设置其他属性。关于 log4php 配置的文档几乎完全是通过 properties/xml 文件完成的——尽管它说所有设置都可以通过编程方式进行更改。

有没有人做过这样的事情?如果是这样,我该怎么做?我查看了http://incubator.apache.org/log4php/index.html上的文档,但我需要更多帮助。

澄清一下 - 我不想使用配置文件,因为最终用户将无法直接访问这些文件。我将提供一个前端来更改某些日志记录设置,所有设置都将存储在数据库中。

4

1 回答 1

3

查看 API 文档告诉我他们正在使用配置适配器和策略模式来配置记录器。适配器有一个方法configure,由主 Logger 调用。有一个LoggerConfiguratorPhp,它将读取/包含一个返回常规 PHP 数组的 PHP 文件。我可以想象这可以很容易地修改为接受从数据库返回的数组。看看这个类的源代码作为起点。您将要创建的是 a LoggerConfiguratorDB,然后您可以将其传递给主 Logger 类,如下所示:

$configurator = dirname(__FILE__).'/../resources/configurator_db.php';
Logger::configure( $configurator, 'LoggerConfiguratorDb');

我从未使用过 Log4Php,这只是通过查看 API 来假设的。我完全不知道新适配器的外观。但也许这会让你走向正确的方向。

如果您设法想出一些东西,为什么不将其捐赠给该项目:)

于 2010-01-06T18:14:07.517 回答