最通俗易懂的Java日志框架使用总结

本文介绍了如何在Spring和SpringBoot中使用SLF4j作为日志抽象层,并分别与Log4j、JUL等具体实现进行整合,以及如何配置不同的日志适配器和解决可能出现的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * <pre>
 *     JCL,SLF4j: 日志的抽象层,也叫日志门面
 *     Log4j,JUL,Log4j2,Logback: 日志的具体实现
 *
 *     在Spring中,默认的日志抽象是JCL
 *     在SpringBoot中,默认的日志抽象是SLF4J + Logback
 *
 *
 *     日志的使用和依赖选择: 以使用SLF4j日志门面为例
 *      需要调用日志抽象层的方法,而不是具体实现的方法
 *
 *     1. SLF4j  ->  只导入slf4j-api抽象层API  ->  日志输出到/dev/null的位置,并提示No SLF4J providers were found,没收找到对应的日志实现
 *
 *
 *     2. SLF4j + Logback
 *
 *        SLF4j  ->  导入slf4j-api抽象层API(可省略,因为具体实现依赖该API,所以会自动引入进来)  -> 导入logback的实现: logback-classic
 *
 *       总结: SLF4j + logback 只需要添加"logback-classic"依赖 implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.5.0'
 *
 *
 *     3. SLF4j + log4j
 *        由于log4j出现的比SLF4j门面还早,所以不可能直接能实现该日志抽象,所以需要一层适配层,上到SLF4j,下到log4j实现
 *
 *        SLF4j  ->  导入slf4j-api抽象层API(可省略,因为具体实现依赖该API,所以会自动引入进来)  ->  导入slf4f-log4j的适配层: slf4j-log4j12   -> 适配层自动添加log4j依赖
 *
 *               -> 输出日志提示:No appenders could be found for logger,Please initialize the log4j system properly
 *
 *               -> 表示没有找到配置文件,添加log4j的配置文件
 *
 *        总结: SLF4j + log4j 只需要添加"slf4j-log4j12"依赖 implementation group: 'org.slf4j', name: 'slf4j-log4j12', version: '2.0.0'
 *
 *
 *    4. SLF4j + JUL
 *
 *       由于java.util.logging也没有考虑SLF4j,所以也需要适配层
 *
 *       SLF4j  ->  导入slf4j-api抽象层API(可省略,因为具体实现依赖该API,所以会自动引入进来)  ->  导入slf4f-log4j的适配层: slf4j-jdk14 -> 因为是JDK提供的,所以可以直接打印
 *
 *       总结: SLF4j + jul 只需要添加"slf4j-jdk14"依赖 implementation group: 'org.slf4j', name: 'slf4j-jdk14', version: '2.0.0'
 *
 *
 *    5. SLF4j +  默认实现
 *
 *        SLF4j  ->  导入slf4j-api抽象层API  ->  导入默认实现依赖:slf4j-simple
 *
 *        总结: SLF4j + jul 只需要添加"slf4j-jdk14"依赖 implementation group: 'org.slf4j', name: 'slf4j-simple', version: '2.0.0'
 *
 *   6. 大总结
 *      所有的配置文件都是使用具体实现对应的配置文件,如何配置在官方可以查找
 * </pre>
 *
 * <pre>
 *     不同的框架使用的日志显示不同,如何做到所有的日志实现统一呢?
 *      1. 对于JCL日志门面,使用jcl-over-slf4j进行替换,将框架中的JCL依赖排除,添加jcl-over-slf4j覆盖依赖
 *          implementation group: 'org.slf4j', name: 'jcl-over-slf4j', version: '2.0.0'
 *      2. 对于Log4j日志实现,使用log4j-over-slf4j进行替换,将框架中的Log4j依赖排除,添加log4j-over-slf4j覆盖依赖
 *          implementation group: 'org.slf4j', name: 'log4j-over-slf4j', version: '2.0.0'
 *      3. 对于JUL日志实现,使用jul-to-slf4j进行替换,将框架中的jul依赖排除,添加jul-to-slf4j覆盖依赖
 *          implementation group: 'org.slf4j', name: 'jul-to-slf4j', version: '2.0.0'
 * </pre>
 */
public class Logging {
    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(Logging.class);
        logger.info("hello");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值