我有一个PHP应用程序,其中包含每个模块中的多个模块和各种设置。我想使用log4php启用日志记录,但每个模块都有不同的设置(即日志级别,日志文件等)。其中一些设置需要由最终用户即时更改(日志级别),我想将这些属性存储在数据库中。
现在我可以动态设置loglevel。我无法确定如何动态设置其他属性。有关log4php配置的文档几乎完全通过properties / xml文件完成 - 尽管它说可以通过编程方式更改所有设置。
有没有做过这样的事情?如果是这样,我该怎么办?我查看了http://incubator.apache.org/log4php/index.html处的文档,但我需要更多帮助。
澄清 - 我不想使用配置文件,因为最终用户无法直接访问这些文件。我将提供一个前端来更改某些日志记录设置,所有设置都将存储在数据库中。
答案 0 :(得分:3)
查看API文档告诉我他们正在使用配置适配器和策略模式来配置记录器。适配器只有一个方法configure,由主Logger调用。有一个LoggerConfiguratorPhp,它将读取/包含一个返回常规PHP数组的PHP文件。我可以想象这可以很容易地修改为接受从数据库返回的数组。看看这个类的源代码的起点。您要创建的是LoggerConfiguratorDB
,然后可以将其传递到主Logger类,如下所示:
$configurator = dirname(__FILE__).'/../resources/configurator_db.php';
Logger::configure( $configurator, 'LoggerConfiguratorDb');
我从未使用过Log4Php,这只是假设通过查看API。我完全不知道新的适配器将如何看起来像。但也许这会让你走向正确的方向。
如果你设法提出一些为什么不把它捐赠给项目:)