目录
一、日志概述
二、日志使用
2.1 打印日志
2.2 日志格式
2.3 日志级别
2.4 日志配置
2.4.1 日志级别
2.4.2 日志持久化
2.4.3 日志文件分割
2.4.4 配置日志格式
三、更简单的日志输出
3.1 添加 lombok 依赖
3.2 输出日志
在SpringBoot项目启动后,项目本身就有默认的日志输出,即:

SpringBoot 内置了日志框架 Slf4j,可以直接在程序中调用 Slf4j 来输出日志。
在程序中获取日志对象需要使用日志工厂LoggerFactory,如下代码所示:
private static Logger logger = LoggerFactory.getLogger(LoggerController.class); Logger 对象是属于 org.slf4j 包下的,不要导入错包。日志对象的打印方法有很多种,先使用 info() 方法来输出日志,如下代码所示:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class LoggerController { private static Logger logger = LoggerFactory.getLogger(LoggerController.class); @PostConstruct public String logger(){ logger.info("info 日志"); return "打印日志"; } } 

从上图可以看到,日志输出内容元素具体如下:
①. 时间日期:精确到毫秒
②. 日志级别:ERROR, WARN, INFO, DEBUG 或TRACE
③. 进程ID
④. 线程名
⑤. Logger名(通常使用源代码的类名)
⑥. 日志内容
那么可以通过以下代码实现不同级别的日志打印:
/** * 打印不同级别的⽇志 * @return */ @PostConstruct public String printLog() { logger.trace("================= trace ==============="); logger.debug("================= debug ==============="); logger.info("================= info ==============="); logger.warn("================= warn ==============="); logger.error("================= error ==============="); return "打印不同级别的⽇志" ; } 
logging.level.root=debug 在yml文件中:
logging: level: root: debug 配置完成之后,重新启动项目,运行上面代码,可发现:

logging.file.name=springboot.log yml配置 : # 设置⽇志⽂件的⽂件名 logging: file: name: springboot.log 启动项目刷新之后会显示:

2. 配置日志文件的保存路径
properties配置logging.file.path=D:/temp yml配置:
# 设置⽇志⽂件的⽬录 logging: file: path: D:/temp 启动项目刷新之后会显示:

这种方式只能设置日志的路径, 文件名为固定的spring.log。
logging.file.name 和 logging.file.path 两个都配置的情况下, 只生效其一, 以 logging.file.name 为准。
| 配置项 | 说明 | 默认值 |
|---|---|---|
| http://logging.logback.rollingpolicy.file-name-pattern | 日志分割后的文件名格式 | ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz |
| http://logging.logback.rollingpolicy.max-file-size | 日志文件超过这个大小就自动分割 | 10MB |
logging.logback.rollingpolicy.file-name-pattern=${LOG_FILE}.%d{yyyy-MM-dd}.%i logging.logback.rollingpolicy.max-file-size=1KB yml配置 : logging: logback: rollingpolicy: max-file-size: 1KB file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i 日志文件超过1KB就分割,分割后的日志文件名为:日志名.日期.索引
项目运行, 多打印一些日志, 日志分割结果:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| http://logging.pattern.console | 控制台日志格式 | %clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MMdd'T'HH:mm:ss.SSSXXX}}){faint} %clr(${LOG_LEVEL_PATTERN:- %5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]) {faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx} |
| http://logging.pattern.file | 日志文件 的日志格 式 | %d{${LOG_DATEFORMAT_PATTERN:-yyyy-MMdd'T'HH:mm:ss.SSSXXX}} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx} |


”-Dspring.output.ansi.enabled=ALWAYS“
重新启动程序便可解决问题。 properties配置: logging.pattern.console='%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n‘ yml配置:
logging: pattern: console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n' file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n' org.projectlombok lombok true import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RestController; @Slf4j @RestController public class LogController { @PostConstruct public void log(){ log.info("--------------要输出⽇志的内容----------------"); } } 运行结果如下: