SpringBoot基础教程2-1-4 日志规范-基础配置详解

1. 概述

不须要任何配置,只须要添加spring-boot-starter-web依赖,SpringBoot已经为咱们集成日志框架,默认使用logbackhtml

在项目根目录使用maven命令mvn dependency:tree,查看依赖结果以下java

建立主函数,运行后,能够看到,SpringBoot默认日志格式以下git

格式解析:(默认采用颜色日志)github

  • 时间日期:精确到毫秒,能够用于排序
  • 日志级别:ERROR、WARN、INFO、DEBUG、TRACE
  • 进程ID
  • 分隔符:采用 --- 来标识日志开始部分
  • 线程名:方括号括起来(可能会截断控制台输出)
  • Logger名:一般使用源代码的类名
  • 日志内容:咱们输出的消息

2. 颜色日志

SpringBoot 2.0.3默认开启颜色日志,判断终端是否支持ANSI,支持则打印颜色日志,也能够在application.yml文件修改spring.output.ansi.enabled来修改默认值web

  • ALWAYS: 启用 ANSI 颜色的输出。
  • DETECT: 尝试检测 ANSI 着色功能是否可用(默认值)。
  • NEVER: 禁用 ANSI 颜色的输出。

%clr修改颜色。好比想使文本变为黄色 %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}。目前支持的颜色有(blue、cyan、faint、green、magenta、red、yellow)spring

3. 日志级别

SpringBoot 默认为咱们输出的日志级别为 INFO、WARN、ERROR,如须要输出更多日志的时候,能够经过如下方式开启app

  • 命令模式: java -jar app.jar --debug=true , 这种命令会被 SpringBoot 解析,且优先级最高
  • 配置模式:Chaper1-1-2提到的配置debug: true该配置只对嵌入式容器、Spring、Hibernate生效

本身项目须要手动配置日志级别,配置规则:logging.level.<logger-name>=<level>,或者,logging.level.<目录>=<level>框架

logging:
  level:
    # org.springframework.web目录下日志级别debug
    org.springframework.web: debug
    # com.mkeeper目录下日志级别info
    com.mkeeper: info
    # com.mkeeper.controller.off目录下日志关闭
    com.mkeeper.controller.off: off

4. 日志输出格式

  • logging.pattern.console: 定义输出到控制台的格式(不支持JDK Logger)
  • logging.pattern.file: 定义输出到文件的格式(不支持JDK Logger)

5. 文件日志

SpringBoot默认只输出控制台,不输出文件;经过下面配置添加文件日志输出maven

  • logging.file 将日志写入到指定的 文件 中,默认为相对路径,能够设置成绝对路径
  • logging.path 将名为 spring.log 写入到指定的文件夹中
  • logging.file.max-size 限制日志文件大小,日志文件在达到规定大小时进行切割,产生一个新的日志文件
  • logging.file.max-history 限制日志保留天数,到期自动删除

6. 推荐@Slf4j

若是不想每次都写private final Logger logger = LoggerFactory.getLogger(XXX.class); 能够用注解@Slf4j,该注解依赖lombokslf4j(SpringBoot已经自动配置,不用手动添加)函数

@Slf4j
@RestController
public class LogController {
    //若是不想每次都写private final Logger logger = LoggerFactory.getLogger(XXX.class); 能够用注解@Slf4j
    //private final Logger logger = LoggerFactory.getLogger(LogController.class)

    @GetMapping("/log")
    public void log(){
        log.debug(this.getClass().getSimpleName() + ": debug");
        log.info(this.getClass().getSimpleName() + ": info");
        log.warn(this.getClass().getSimpleName() + ": warn");
        log.error(this.getClass().getSimpleName() + ": error");
    }
}

7. 总结

推荐阅读官方文档了解更多日志配置细节,有任何建议,欢迎留言探讨,本文源码


欢迎关注博主公众号:Java十分钟

欢迎关注博主公众号

相关文章
相关标签/搜索