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()就行了.