SpringBoot 使用Logback日志

原创
2021/04/23 23:24
阅读数 68

Logback 是由 log4j 创始人设计的又一个开源日志组件,拥有更好的特性,用来取代 Log4j 的一个日志框架,是 SLF4j 的原生实现。Logback 当前分成三个模块:logback-core,logback- classic 和 logback-access。logback-core 是其它两个模块的基础模块。logback-classic 是 Log4j 的一个改良版本。

官网地址:http://logback.qos.ch/

 

SpringBoot 默认选择的是 SLF4J + Logback 的组合,默认将日志打印到控制台上。

日志框架有很多,大多数是由一个抽象层 + 实现层的组合来搭建的,而用户不应该直接使用具体的日志实现类,应该使用日志的抽象层。

  • 抽象层:JCL(Jakarta Commons Logging)、SLF4j(Simple Logging Facade for Java)、jboss-logging。
  • 实现层:Log4j 、JUL(java.util.logging)、Log4j2、Logback。

 

一、编写代码

1、通过类加载方式打印日志

由于新建的 Spring Boot 项目一般都会引用 spring-boot-starter 或者 spring-boot-starter-web,而这两个起步依赖中都已经包含了对于 spring-boot-starter-logging 的依赖,所以我们无需额外添加依赖。

@RestController
@RequestMapping("/demo")
public class DemoController {

    Logger logger = LoggerFactory.getLogger(getClass());

    @GetMapping
    public void demo() {
        logger.trace("Trace 日志...");
        logger.debug("Debug 日志...");
        logger.info("Info 日志...");
        logger.warn("Warn 日志...");
        logger.error("Error 日志...");
    }

}

这里我们打印出 5 种不同级别的日志,控制台日志信息:

 

2、使用 Lombok 打印日志

如果项目有使用 Lombok 的话,直接使用 @Slf4j 注解可以省去从日志工厂生成日志对象这一步,直接进行日志记录。

@Slf4j
@RestController
@RequestMapping("/demo")
public class DemoController {

    @GetMapping
    public void demo() {
        log.trace("Trace 日志...");
        log.debug("Debug 日志...");
        log.info("Info 日志...");
        log.warn("Warn 日志...");
        log.error("Error 日志...");
    }

}

 

二、日志配置

1、生成日志文件

修改 applicaition.properties 信息。

# 配置全局日志级别为 trace
logging.level.root=trace
# 配置某个包的日志级别为 trace
logging.level.com.example.demo=trace
# 配置日志文件存放路径
logging.file.path=/Users/Documents/JavaWeb/Other/App/demo/logs
# 配置日志文件名字(此时不需要再配置 logging.file.path)
logging.file.name=/Users/Documents/JavaWeb/Other/App/demo/logs/demo.log
# 配置日志文件大小
logging.file.max-size=10MB
# 配置保留的日志时间
logging.file.max-history=10

日志级别从小到大为 trace < debug < info < warn < error < fatal,由于默认日志级别设置为 INFO,因此上面样例 trace 和 debug 级别的日志都看不到。

配置信息:

  • logging.level.root    配置全局日志级别为 trace,系统所有的日志都能看到。
  • logging.level.com.example.demo   配置某个包的日志级别为 trace,只对所有 com.example.demo 包下产生的日志级别改成 trace。
  • logging.file.path    配置日志文件存放路径。
  • logging.file.name  配置日志文件名字(此时不需要再配置 logging.file.path)。
  • logging.file.max-size  配置日志文件大小。
  • logging.file.max-history  配置保留的日志时间。

可以看到我们日志文件生成了。

 

2、日志格式输出

1、我们可以分别修改在控制台输出的日志格式,以及文件中日志输出的格式:

  • %d{HH:mm:ss.SSS}:日志输出时间
  • %-5level:日志级别,并且使用 5 个字符靠左对齐
  • %thread:输出日志的进程名字,这在 Web 应用以及异步任务处理中很有用
  • %logger:日志输出者的名字
  • %msg:日志消息
  • %n:平台的换行符
# 修改在控制台输出的日志格式
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %-5level [%thread] %logger : %msg%n
# 修改输出到文件的日志格式
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger : %msg%n

2、如果我们修改了日志格式,SpringBoot 默认日志 Logback 日志输出彩色也随之消失。这是我们就可以设置不同类型的数据具有不同的高亮效果:

# 修改在控制台输出的日志格式
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %clr(%5p) [%thread] %clr(%logger){cyan} : %msg%n
# 修改输出到文件的日志格式
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger : %msg%n

3、如果觉得类名太长(%logger),我们还可以设置个长度限制。下面限制长度为 45 个字符,超过得话包名部分会变成缩写:

# 修改在控制台输出的日志格式
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %clr(%5p) [%thread] %clr(%logger{45}){cyan} : %msg%n
# 修改输出到文件的日志格式
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger : %msg%n

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部