【问题标题】:Log4Php properties setting at runtime运行时的 Log4Php 属性设置
【发布时间】:2011-01-02 03:52:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php database logging log4php


    【解决方案1】:

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

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

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

    如果你想出一些东西,为什么不把它捐赠给项目:)

    【讨论】:

    • 在下载的存档中,您可以在文件“src/examples/php/configurator_php.php”中找到如何执行此操作的示例。然而,log4php v2.1.0 是我实际使用的第一个版本。
    猜你喜欢
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 2011-04-17
    相关资源
    最近更新 更多