log4cxx的PropertyWatchdog
(轉載請注明來源于金慶的專欄)
查看log4cxx代碼的時候, 看到了一個PropertyWatchdog類,
class PropertyWatchdog : public FileWatchdog
看來是定時檢測log4j.properities配置文件的.
這正是我一直想要的功能, 更改配置無需重啟就生效.
搜到一點代碼片段:
http://mail-archives.apache.org/mod_mbox/logging-log4j-user/200101.mbox/%3C5.0.0.25.0.20010123124712.00aff690@mail.urbanet.ch%3E
再一看, 原來該類是內部使用的, 僅由PropertyConfigurator::configureAndWatch()使用.
配置時, 將configure()換成configureAndWatch()就行了. 只是這樣就必須顯式配置, 無法利用自動配置了.
要是能自動配置為自動更新就更好了. 查了代碼, 好像只能由configureAndWatch()啟動.
要是有個配置項該多好啊:
log4j.reloadDelay=ssss
還發現了一個隱藏的配置項:
log4j.debug=true/false
可能用來代替顯式的setInternalDebugging()調用.
還發現cofigureAndWatch()在deamon()之后會失效,
daemon()調用時并沒有改變當前目錄也沒有關閉文件, 但好像watch線程就會退出.
不知fork()調用后會不會也是同樣.
現在沒有時間去深究, 以后有空再看.
反正改為daemon()之后configureAndWatch()就行了.
(轉載請注明來源于金慶的專欄)
查看log4cxx代碼的時候, 看到了一個PropertyWatchdog類,
class PropertyWatchdog : public FileWatchdog
看來是定時檢測log4j.properities配置文件的.
這正是我一直想要的功能, 更改配置無需重啟就生效.
搜到一點代碼片段:
http://mail-archives.apache.org/mod_mbox/logging-log4j-user/200101.mbox/%3C5.0.0.25.0.20010123124712.00aff690@mail.urbanet.ch%3E
再一看, 原來該類是內部使用的, 僅由PropertyConfigurator::configureAndWatch()使用.
配置時, 將configure()換成configureAndWatch()就行了. 只是這樣就必須顯式配置, 無法利用自動配置了.
要是能自動配置為自動更新就更好了. 查了代碼, 好像只能由configureAndWatch()啟動.
要是有個配置項該多好啊:
log4j.reloadDelay=ssss
還發現了一個隱藏的配置項:
log4j.debug=true/false
可能用來代替顯式的setInternalDebugging()調用.
還發現cofigureAndWatch()在deamon()之后會失效,
daemon()調用時并沒有改變當前目錄也沒有關閉文件, 但好像watch線程就會退出.
不知fork()調用后會不會也是同樣.
現在沒有時間去深究, 以后有空再看.
反正改為daemon()之后configureAndWatch()就行了.