slf4j、log4j、log4j2的jar包配合使用,日志打印问题

由于java日志框架众多(common-logging,log4j,slf4j,logback等),引入jar包的时候,就要为其添加对应的日志实现。。

不同的jar包,可能用了不同的日志框架,那引用了之后就得给不同的日志框架添加配置,这个是比较麻烦的。

slf4j就是为了解决这个麻烦事的。

slf4j全称为Simple Logging Facade for JAVA,java简单日志门面。类似于Apache Common-Logging,是对不同日志框架提供的一个门面封装,可以在部署的时候不修改任何配置即可接入一种日志实现方案。但是,他在编译时静态绑定真正的Log库。使用SLF4J时,如果你需要使用某一种日志实现,那么你必须选择正确的SLF4J的jar包的集合(各种桥接包)。

log4j -> log4j2 桥接

去掉 log4j 1.x jar,添加log4j-1.2-api.jar,配合 log4j-api-2.x.x.jar 和 log4j-core-2.x.x.jar 即可,依赖如下

log4j-1.2-api.jar
    log4j-api-2.x.x.jar
        log4j-core-2.x.x.jar

log4j2 -> log4j 桥接

不建议。
本来log4j在2015年停止更新后,就建议转向log4j2,并提供了到log4j2的桥接接口。
所以反过来log4j2到log4j是不建议这么做的,log4j2也没有提供直接支持。
但理清了上面的jar包作用,就会发现,可以通过 log4j2 -> slf4j -> log4j 的方式来实现。

需要的jar包,根据依赖关系分别是:

log4j-api-2.x.x.jar
    log4j-to-slf4j.jar
        slf4j-api-x.x.x.jar
            slf4j-log4j12-x.x.x.jar
                log4j-1.2.17.jar

slf4j

同时有日志输出和转接功能。
核心jar包是 slf4j-api-x.x.x.jar
因为一般slf4j 只作为桥接用,如果要搭配 slf4j 自带的简单日志输出,那么就加上 slf4j-simple.jar

log4j -> slf4j

将代码中的log4j日志桥接到 slf4j,需要如下jar包

log4j-over-slf4j-x.x.x.jar
    slf4j-api-x.x.x.jar

log4j2 -> slf4j

将代码中的log4j2日志桥接到 slf4j,需要如下jar包

log4j-api-2.x.x.jar
    log4j-to-slf4j-2.x.x.jar
        slf4j-api-x.x.x.jar

slf4j -> log4j

将slf4j日志,采用log4j实现进行输出,需要如下jar包

slf4j-api-x.x.x.jar
    slf4j-log4j12.jar
        log4j-1.2.17.jar

slf4j -> log4j2

将slf4j日志,采用log4j2实现进行输出,需要如下jar包

slf4j-api-x.x.x.jar
    log4j-slf4j-impl.jar
        log4j-api.jar
            log4j-core.jar

slf4j的代理绑定和输出组合起来,就实现了从一种日志框架,转到另一种日志实现框架的效果。
建议在这三种日志混用的情况下,采用如下方案

log4j -> log4j2
slf4j -> log4j2
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值