金庆的专栏

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  423 随笔 :: 0 文章 :: 454 评论 :: 0 Trackbacks
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()就行了.


posted on 2008-12-02 09:50 金庆 阅读(1734) 评论(0)  编辑 收藏 引用 所属分类: 1. C/C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理