一、SpringBoot日志简介
SpringBoot使用Commons Logging进行所有内部日志记录,但底层日志实现保持开放状态。为Java Util Logging,Log4j2和Logback提供了默认配置。
SpringBoot能自动适配所有的日志,本次讲解slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉;
SpringBoot默认帮我们配置好了日志,我们直接即可。
下图是SpringBoot日志的依赖关系:
二、SpringBoot使用slf4j日志
1.创建一个SpringBoot应用
只依赖Web即可
2.创建一个Controller类
下面代码详细书写了Logger的使用
package com.zyl.springboot.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/log") public class LoggingController { Logger logger = LoggerFactory.getLogger(getClass()); @GetMapping("/logging") public void logging(){ // 级别由低到高 trace<debug<info<warn<error logger.trace("这是一个trace日志..."); logger.debug("这是一个debug日志..."); // SpringBoot默认是info级别,只会输出info及以上级别的日志 logger.info("这是一个info日志..."); logger.warn("这是一个warn日志..."); logger.error("这是一个error日志..."); } }
3.测试输出:默认info级别
从输出结果可以看出,SpringBoot默认输出info级别
三、配置文件
创建一个application.yml
配置文件
1.调整级别
我们知道SpringBoot默认是info级别,下面配置将可以为我们调整级别,并且可为不同目录指定不同的级别
# slf4j日志配置 logging: # 配置级别 level: #分包配置级别,即不同的目录下可以使用不同的级别 com.zyl.springboot: trace
测试输出,可以发现已经调整至trace级别了
2.输出日志文件
默认情况SpringBoot日志只输出至控制台,不写入日志文件。
通过配置file
参数可以指定日志输出的文件名,默认输出至当前项目目录下
# slf4j日志配置 logging: # 配置级别 level: #分包配置级别,即不同的目录下可以使用不同的级别 com.zyl.springboot: trace # 指定输出日志的文件名,默认输出至当前项目目录下 file: springboot.log
测试结果可以看出,已经在当前项目目录下输出了日志文件
输出到指定磁盘目录,注意,在改变输出日志的位置时,将原日志文件删除
将file
配置输入完成日志文件名及路径,即可指定目录了
# slf4j日志配置 logging: # 配置级别 level: #分包配置级别,即不同的目录下可以使用不同的级别 com.zyl.springboot: trace # 在不指定路径,只指定输出日志的文件名,默认输出至当前项目下 # 若指定,则会输出至指定目录下 file: g:/springboot.log