雨翔河
首页
列表
关于
log4j 迁移到 logback 的小插曲
2019-01-22 07:33
这次把使用log4j的项目中的log4j都去掉了,统一使用logback。 就需要干掉下面下面两个jar包 ``` log4j.jar slf4j-log4j12.jar ``` 由于项目中代码很多地方直接使用了`log4j`,所以需要引入 `log4j-over-slf4j` > 这个包会和log4j冲突,必须全部排出掉log4j的包。 去掉log4j的配置文件,引入logback的包,加上logback的包和配置文件 ``` logback-classic logback-core slf4j-api log4j-over-slf4j ``` 有个很有意思的插曲,上线后发现了一个很诡异的事情,日志输出的时间和服务器的北京时间相差了8小时,配置格式: ``` <Pattern>%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%thread] %level - %m%n</Pattern> ``` 这个配置如果使用log4j的话输出格式大致是这样的: ``` 2019-01-20 23:00:00,621 INFO ...... ``` 如果放在logback的话,输出格式是这样的: ``` 2019-01-22 13:00:00 INFO ..... ``` 正好相差8小时,且`SSS`没有输出 在logback里不支持pattern的时间格式使用逗号进行分割,所以使用`,`是不行的,而log4j是可以的。 将逗号换成点的写法就好了。 改为: ``` <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%thread] %level - %m%n</Pattern> ``` 日志输出变为为: ``` 2019-01-20 23:00:00.621 INFO ...... ``` 老的代码前人使用了不规范的写法,后人进行更改的时候没有注意到这个小细节导致了日志时间出现问题。 这个问题之所以在测试环境没有被发现是因为只有特定的日志打印才会使用这个Pattern的格式输出日志,且日志量极少。
类型:工作
标签:log4j,logback,java
Copyright © 雨翔河
我与我周旋久
独孤影
开源实验室