一、web工程纯log4j日志系统升级为log4j+slf4j
1.添加相关jar包:
- log4j-xxx.jar
- slf4j-api-xxx.jar
- slf4j-log4j-xxx.jar
(jar包版本自行选择,jar包下载路径:链接: https://repo1.maven.org/maven2/org/slf4j/.)
2、获取方式改变
将原有的log4j获取log的方法改为slf4j获取log的方法,方便以后更改log实现:
- log4j获取log方式:
import org.apache.log4j.Logger;
private Logger logger = Logger.getLogger(InitializeServlet.class);
2、slf4j获取log方式:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private Logger logger = LoggerFactory.getLogger(InitializeServlet.class);
3、新旧日志对比
对比旧日志和新日志,检查输出是否一致,保证不出错
二、slf4+log4j联合使用的好处
slf4j只是定义了一组日志接口,但并未提供任何实现,既然这样,为什么要用slf4j呢?log4j不是已经满足要求了吗?
是的,log4j满足了要求,但是,日志框架并不只有log4j一个,你喜欢用log4j,有的人可能更喜欢logback,有的人甚至用jdk自带的日志框架,这种情况下,如果你要依赖别人的jar,整个系统就用了两个日志框架,如果你依赖10个jar,每个jar用的日志框架都不同,岂不是一个工程用了10个日志框架,那就乱了!
如果你的代码使用slf4j的接口,具体日志实现框架你喜欢用log4j,其他人的代码也用slf4j的接口,具体实现未知,那你依赖其他人jar包时,整个工程就只会用到log4j日志框架,这是一种典型的门面模式应用,与jvm思想相同,我们面向slf4j写日志代码,slf4j处理具体日志实现框架之间的差异,正如我们面向jvm写java代码,jvm处理操作系统之间的差异,结果就是,一处编写,到处运行。