上面上常见的日志框架有:JUL(java.util.logging)、JCL(2014停更)、Jboss-logging、Log4j、Logback、SLF4j、Log4j2

Spring框架默认使用:JCL

但SpringBoot选择了:SLF4j+logback 的日志框架

预写先知

日志级别从下到大:trace、debug、info、warn、error

也就是说:日志级别是Error 可打印 trace、debug、info、warn、error级别的日志

如果日志级别设置是:info,则日志仅记录 trace、debug、info级别的日志,像warn、error则不会记录!

如何使用?

1、声明日志对象,方便后面调用

// 导包
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


    // 声明一个日志记录器对象,并指定类信息
    public static final Logger LOGGER = LoggerFactory.getLogger(Diytest.class);

2、正式调用

    @Test
    public void TestLogInfo(){
        // 打印日志信息
        LOGGER.error("error");
        LOGGER.warn("warn");
        LOGGER.info("默认日志级别是 info");
        LOGGER.debug("debug");
        LOGGER.trace("trace 翻译过来是追踪");
        // 使用Log4j2 使用桥接器切换为slf4j 门面和logback实现
        org.apache.logging.log4j.Logger log4j = LogManager.getLogger(Diytest.class);
        log4j.info("我是Log4j2的日志 info");
    }

3、测试输出

2022-02-21 11:49:49.795 ERROR 29324 --- [           main] com.xunliao.zhenliaowms.Diytest          : error
2022-02-21 11:49:49.795  WARN 29324 --- [           main] com.xunliao.zhenliaowms.Diytest          : warn
2022-02-21 11:49:49.795  INFO 29324 --- [           main] com.xunliao.zhenliaowms.Diytest          : 默认日志级别是 info
2022-02-21 11:49:49.798  INFO 29324 --- [           main] com.xunliao.zhenliaowms.Diytest          : 我说Log4j的日志 info

设置 日志级别 可根据不同包 打印不同级别的日志

# 自定义Logger对象的日志级别
# logging.level 后面跟.包名 其子包之后都会是此日志级别 如:
logging.level.com.zanglikun=trace

测试输出

2022-02-21 11:52:54.305 ERROR 4288 --- [           main] com.xunliao.zhenliaowms.Diytest          : error
2022-02-21 11:52:54.305  WARN 4288 --- [           main] com.xunliao.zhenliaowms.Diytest          : warn
2022-02-21 11:52:54.305  INFO 4288 --- [           main] com.xunliao.zhenliaowms.Diytest          : 默认日志级别是 info
2022-02-21 11:52:54.305 DEBUG 4288 --- [           main] com.xunliao.zhenliaowms.Diytest          : debug
2022-02-21 11:52:54.305 TRACE 4288 --- [           main] com.xunliao.zhenliaowms.Diytest          : trace 翻译过来是追踪
2022-02-21 11:52:54.308  INFO 4288 --- [           main] com.xunliao.zhenliaowms.Diytest          : 我是Log4j2的日志 info

去配置文件application.properties 指定日志具体打印的信息格式

# 指定控制台输出消息格式:日志级别 时间 线程名 日志信息 换行
logging.pattern.console=[%-5level] %d{yyyy-MM-dd HH-mm-ss} %c [%thread] ==== %msg %n

测试输出

[ERROR] 2022-02-21 11-58-40 com.xunliao.zhenliaowms.Diytest [main] ==== error 
[WARN ] 2022-02-21 11-58-40 com.xunliao.zhenliaowms.Diytest [main] ==== warn 
[INFO ] 2022-02-21 11-58-40 com.xunliao.zhenliaowms.Diytest [main] ==== 默认日志级别是 info 
[DEBUG] 2022-02-21 11-58-40 com.xunliao.zhenliaowms.Diytest [main] ==== debug 
[TRACE] 2022-02-21 11-58-40 com.xunliao.zhenliaowms.Diytest [main] ==== trace 翻译过来是追踪 
[INFO ] 2022-02-21 11-58-40 com.xunliao.zhenliaowms.Diytest [main] ==== 我是Log4j2的日志 info 

基本常用就到这了。

不过,针对Slf4j 我更喜欢@Slf4j注解使用

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class Abc {

}

具体业务调用

    // 日志字符串内 可使用 占位符 {}
    log.info("{}成功扣除{}钻石", account, prize);

完结!

特殊说明:
上述文章均是作者实际操作后产出。烦请各位,请勿直接盗用!转载记得标注原文链接:www.zanglikun.com
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取全部资料 ❤