Slf4j与log4j及log4j2的关系及使⽤⽅法
Slf4j与log4j及log4j2的关系及使⽤⽅法
slf4j
slf4j仅仅是⼀个为Java程序提供⽇志输出的统⼀接⼝,并不是⼀个具体的⽇志实现⽅案,就⽐如JDBC⼀样,只是⼀种规则⽽已,所以单独的slf4j是不能⼯作的,必须搭配其他具体的⽇志实现⽅案,⽐如log4j或者log4j2,要在系统中使⽤slf4j,我们需要引⼊的核⼼包为:slf4j-api-1.6.4.jar。
如果不想每次都写private final Logger logger = Logger(XXX.class); 可以在⽅法前⽤注解@Slf4j,然后直接使⽤log.info去打印⽇志。如果注解@Slf4j注⼊后不到变量log,那就给IDE安装lombok插件(idea中:1、File → settings → Plugins, 然后点击“Browse repositories”;2、输⼊ lombok 搜索插件,点install安装,安装完重启idea)。
log4j
如果在我们系统中单独使⽤log4j的话,我们只需要引⼊log4j的核⼼包就可以了,我这⾥⽤的是:log4j-1.2.17.jar,然后在系统中使⽤如下代码输出⽇志:
private static final org.apache.log4j.Logger logger = org.apache.Logger(Log4jTest.class);
在系统的src⽬录下添加依赖的配置⽂件:
log4j2不打印日志log4j2
如果在我们系统中单独使⽤log4j2的话,我们只需要引⼊log4j2的核⼼包就可以了,我这⾥⽤的是:log4j-api-2.7.jar和log4j-core-2.7.jar,然后在系统中使⽤如下代码输出⽇志:
private static org.apache.logging.log4j.Logger logger = org.apache.logging.Logger(Log4jTest.class);
在系统的src⽬录下添加依赖的配置⽂件。
log4j与log4j2的区别:
1.获取Logger的api不⼀样,log4j的api为org.apache.log4j.Logger,⽽log4j2的api为org.apache.logging.log4j.Logger
2.配置⽅式不⼀样,log4j2对properties的配置⽀持不是很好,它的格式⼀般为xml格式或者yaml格式,这种格式的可读性⽐较好,各种配置⼀⽬了然
3.Log4j2.0基于LMAX Disruptor的异步⽇志在多线程环境下性能会远远优于Log4j 1.x和logback(官⽅数据是10倍以上)。
slf4j+log4j
如果我们在系统中需要使⽤slf4j和log4j来进⾏⽇志输出的话,我们需要引⼊下⾯的桥接jar包:
log4j核⼼jar包:log4j-1.2.17.jar
slf4j核⼼jar包:slf4j-api-1.6.4.jar
slf4j与log4j的桥接包:slf4j-log4j12-1.6.1.jar,这个包的作⽤就是使⽤slf4j的api,但是底层实现是基于log4j.
private static final Logger logger = Logger(Slf4jTest2.class);
slf4j+log4j2
如果我们在系统中需要使⽤slf4j和log4j2来进⾏⽇志输出的话,我们需要引⼊下⾯的jar包:
log4j2核⼼jar包:log4j-api-2.7.jar和log4j-core-2.7.jar
slf4j核⼼jar包:slf4j-api-1.6.4.jar
slf4j与log4j2的桥接包:log4j-slf4j-impl-2.7.jar,这个包的作⽤就是使⽤slf4j的api,但是底层实现是基于log4j2.
private static final Logger logger = Logger(Slf4jTest2.class);
slf4j+log4j不修改代码升级到log4j2
如果我们系统中刚开始⽤的是slf4j和log4j,然后出于性能考虑,要升级到slf4j和log4j2,并且不需要改动任何代码的话(因为我们系统可能是⼀个⼤⼯程,然后基本上每个类都会有⽇志输出,改动代码可能牵⼀发⽽动全⾝),出于这个考虑,我们可以这样来进⾏修改(修改依赖):1、删除项⽬中存在的Log4j1.x所必须的log4j和slf4j-log4j12等依赖,例如从我们上⾯做的去升级的话,需要删除log4j-1.2.17.jar和slf4j-
log4j12-1.6.1.jar
2、添加log4j2和slf4j桥接包:log4j-slf4j-impl-2.7.jar替换log4j和slf4j桥接包:slf4j-log4j12-1.6.1.jar
3、如果我们在系统中使⽤了log4j的api去获取Logger的话:
org.apache.log4j.Logger logger = org.apache.Logger(Log4jTest.class);
我们需要添加log4j-1.2-api-2.7.jar去替换log4j-1.2.17.jar
4、将log4j的properties⽂件修改为log4j2的xml⽂件
然后,同样在系统中使⽤slf4j的⽅式获取⽇志:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论