log4cxx的PropertyWatchdog
(转载请注明来源于金庆的专栏)
查看log4cxx代码的时候, 看到了一个PropertyWatchdog类,
class PropertyWatchdog : public FileWatchdog
看来是定时检测log4j.properities配置文件的.
这正是我一直想要的功能, 更改配置无需重启就生效.
搜到一点代码片段:
http://mail-archives.apache.org/mod_mbox/logging-log4j-user/200101.mbox/%
[email protected]%3E
再一看, 原来该类是内部使用的, 仅由PropertyConfigurator::configureAndWatch()使用.
配置时, 将configure()换成configureAndWatch()就行了. 只是这样就必须显式配置, 无法利用自动配置了.
要是能自动配置为自动更新就更好了. 查了代码, 好像只能由configureAndWatch()启动.
要是有个配置项该多好啊:
log4j.reloadDelay=ssss
还发现了一个隐藏的配置项:
log4j.debug=true/false
可能用来代替显式的setInternalDebugging()调用.
还发现cofigureAndWatch()在deamon()之后会失效,
daemon()调用时并没有改变当前目录也没有关闭文件, 但好像watch线程就会退出.
不知fork()调用后会不会也是同样.
现在没有时间去深究, 以后有空再看.
反正改为daemon()之后configureAndWatch()就行了.