系统中使用的日志记录主要方式为log4j+common-loggin,引用的某些jar包还直接使用了log4j记录日志。
所以,在系统中,能够见到的日志记录方式主要类似以下两种:
1.public static Logger log = Logger.getLogger(Xxx.class);
这种方式是直接使用log4j进行日志记录,使用log4j包;
另外一种是:
2.public static Log log1 = LogFactory.getLog(Xxx.class);
这种方式使用common-logging作为门面,记录日志,使用commons-logging包。
系统移植日志记录功能为slf4j+logback方式的主要问题是:我们决定在接下来的版本中使用
3.public static Logger log = LoggerFactory.getLogger(Xxx.class);
引用slf4j包作为日志记录的门面;
但是系统中原来使用common-loggin进行日志记录的地方太多了,改动起来影响范围较大,所以要保证原来使用第一种方式进行日志记录功能的正常,解决这个问题的方法为使用jcl-over-slf4j包作为桥接包,保证原有日志记录功能正常。jcl-over-slf4j包的内部结构如图:
之后使用
log4j-over-slf4j作为桥接包,保证原有使用
log4j进行日志记录功能的正常工作,
log4j-over-slf4j包中的结构如下:
从截图中可以发现,其实这两个包是log4j和common-logging的替代包,所以,还需要删除系统中原来的common-loggin包和log4j包。
还有一个地方要注意,因为系统中是使用
slf4j+logback记录日志,如果系统中引入了
slf4j-log4j12包,一定要删除掉。原因为:
Logback-classic包告诉系统使用
slf4j+logback方式记录日志,
slf4j-log4j12则告诉系统使用
slf4j-log4j记录日志,在系统启动时,会造成混乱和不可预计的错误。
附上两篇博文,作为参考: