2010-01-06 102 views
1

我有一個PHP應用程序,其中包含每個模塊中的多個模塊和各種設置。我想使用log4php啓用日誌記錄,但每個單獨的模塊都有不同的設置(即日誌級別,日誌文件等)。其中一些設置需要由最終用戶隨時更改(日誌級別),並且我想將這些屬性存儲在數據庫中。在運行時Log4Php屬性設置

現在我可以動態設置loglevel。我無法確定如何動態設置其他屬性。有關log4php配置的文檔幾乎都是通過properties/xml文件完成的 - 儘管它表示所有設置都可以通過編程方式進行更改。

有沒有做過這樣的事情?如果是這樣,我該怎麼做?我查看了http://incubator.apache.org/log4php/index.html的文檔,但我需要更多幫助。

澄清 - 我不想使用配置文件,因爲最終用戶不會直接訪問這些配置文件。我將提供一個前端來更改某些日誌記錄設置,並且所有設置都將存儲在數據庫中。

回答

3

查看API Docs告訴我他們正在使用配置適配器和策略模式來配置記錄器。適配器有一個方法configure,由主Logger調用。有一個LoggerConfiguratorPhp,它將讀取/包含返回常規PHP數組的PHP文件。我可以想象這很容易被修改爲接受從數據庫返回的數組。看看這個類的源代碼的起點。你將要創建的是一個LoggerConfiguratorDB,然後你就可以傳遞給主Logger類是這樣的:

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

我從來沒有與Log4Php工作,這只是通過查看API假設。我完全沒有線索,新的適配器將如何看起來像。但也許這會讓你走向正確的方向。

如果你能拿出的東西,爲什麼不捐給項目:)

+1

在下載的壓縮包,你可以找到如何做到這一點在文件中的例子「的src /例子/ PHP/configurator_php .PHP」。然而,log4php v2.1.0是我實際使用它的第一個版本。 – jason 2011-12-12 19:23:24