log4j向logback过渡

2018-09-13  本文已影响11人  2894ab72509d

项目中log4j使用了很久,最近重复日志非常的多,严重影响开发效率,所以打算从log4j向logback过渡,其中也出现了一些问题,最后花了不少时间解决了,以此记录一下

首先去除掉以前的log4j的依赖

然后加入logbac依赖

随后编写logback.xml,前提要删除log4j的配置文件

贴出部分代码,有两个地方需要注意,使用了滚动记录日志的方式,maxFileSize必须要指定,我当时没有指定,文件中始终不能输出任何日志,找了好久才找到。

第二个就是fileNamePattern中 %i 一定要加上,其实是一个index,如果当前日志超过了设置的maxFileSize,就会生成第二个文件,其中%i就会加1,以做区分。

filter是为了过滤日志,只让info级别的日志写入文件

这些东西配置好后logback就可以正常使用了,不过在使用中遇到了一些小问题

logback打印了springFramework,apache等一些第三方包的打印,虽然logback中root的日志级别设置的是info,

但是依然打印了第三方包的debug日志,造成了大量冗余日志

搜索了很多资料,网上这种说话是最多的,不过我改了好几种方式都没有什么作用,level 写成error等也没有作用。

最后还是去logback官方找到了解决方案,spring和apache底层是使用commons-logging做日志输出的,logback中有好几张图解释了什么情况使用什么什么方式做桥接,其中commons-logging需要使用一个jcl的中间包,并且从spring中取出commons-logging的依赖即可,然后spring的日志会由自己配置的logback控制输出。

最后一个是阿里巴巴的druid,找了好半天发现它的pom里面虽然引用了log4j等日志框架,但是scope都是provided,所以很有可能就是依赖项目中的其他log4j,最后才发现百度的api中引入了log4j,顺便将百度的日志也改好了。

去掉了百度中的log4j依赖,并加入中间包做桥接,至此,这个问题就算是解决了。

到现在也没有用logger的节点来解决这个问题,如果有清楚的朋友可以说一下,logger节点控制不了第三方包的日志级别,反正我自己控制不了  - -

上一篇 下一篇

猜你喜欢

热点阅读