Logback+Osgi配置自动更新问题

本文讨论了Logback在Osgi环境下配置文件自动更新的问题,当设置`scan="true"`时,由于Osgi将配置文件转换为特殊URL导致Logback无法检测到变化。解决方案是在启动参数中指定配置文件的完整路径,以避免URL解析错误。通过这种方法,Logback能够成功监视配置并实现自动更新。
摘要由CSDN通过智能技术生成
[b]软件版本[/b]:
Logback-core-0.9.30
Logback-classic-0.9.30
Osgi equinox
Eclipse 3.7.2
[b]存在问题[/b]:
logback.xml配置文件,设置自动检测配置更新,<configuration scan="true" debug="true">,但是启动后,修改配置文件没有自动更新。比如:
<logger name="com.company.server.main" >
<level value="DEBUG" />
</logger>

level修改为INFO,debug级别日志继续输出
[b]问题分析[/b]:
经阅读源码,跟踪调试,反复验证,确认是logback与osgi配合使用时,存在的缺陷,将配置文件放在类路径下,比如放在src下,logback会自动在classpath中找到该文件,但是自动检测更新不起作用。(当然是有解决办法的,请看下文)
当把<configuration scan="true" debug="true">,debug设置为true时,会输出logback内部的一些调试信息。项目启动时会输出:
14:06:35,846 |-INFO in ReconfigureOnChangeFilter{invocationCounter=0} - Will scan for changes in [[D:\workspace\fileaccess\src\test\resources\logback.xml]] every 60 seconds. 
14:06:35,846 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Adding ReconfigureOnChangeFilter as a turbo filter

很明显,这段日志指的是,每60s会检测指定路径下的配置文件是否有变化,该路径就是你配置文件的绝对路径。
而osgi启动时,会怎么样呢?
14:32:58,509 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值