SpringBoot默认使用的日志框架是logback 。spring-boot-starter中包含了spring-boot-starter-logging模块。该日志框架就是logback。所以我们也不需要单独引入spring-boot-starter-logging模块。
org.springframework.boot
spring-boot-starter-logging
SpringBoot默认日志格式
格式说明
时间戳,精确到毫秒:2021-11-13 14:35:20.298logback日志级别.日志级别分为:TRACE、DEBUG、INFO、WARN、ERROR、FATAL:INFO进程ID:1414分割符:默认是:---线程名称:[ restartedMain] 案例演示
pom.xml配置这里我们用到了lombok,使用日志的时候我们可以用@Slf4j注解。
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.5.6
com.rumenz
lession10
0.0.1-SNAPSHOT
lession10
第十节:SpringBoot中的日志管理
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-devtools
runtime
true
org.springframework.boot
spring-boot-starter-test
test
org.projectlombok
lombok
1.18.12
org.springframework.boot
spring-boot-maven-plugin
我们在Controller打印日志
package com.rumenz.lession10.controller;
import lombok.extern.slf4j.Slf4j;
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;
@Slf4j //lombok 提供的注解
@RestController
@RequestMapping("/rumenz")
public class RumenzController {
//如果不使用lombok就需要用以下代码获取日志操作对象
//Logger log = LoggerFactory.getLogger(RumenzController.class);
@GetMapping("/index")
public String index(){
log.trace("Trace 日志...");
log.debug("Debug 日志...");
log.info("Info 日志...");
log.warn("Warn 日志...");
log.error("Error 日志...");
return "入门小站";
}
}
启动Lession10Application,浏览器访问http://127.0.0.1:8080/rumenz/index查看控制台
将logback日志输出到文件默认情况下logback会把日志打印输出到控制台。
SpringBoot默认只会把日志输出到控制台,并不会记录到文件中,生产环境中日志需要记录到文件中存档。如果需要输出到文件可以在application.properties配置文件中设置logging.file.path或logging.file.name
logging.file.path(低版本是logging.path)设置日志的存储路径,会在设置的目录下生成spring.log日志文件。logging.file.name(低版本是logging.name)设置日志文件路径及日志文件名,可以是绝对路径也可以是相对路径。
两者不能同时使用,若同时配置,只有logging.file.name生效。默认情况下,日志大小到10M时间会被截断,生成新的日志文件。
application.properties配置
logging.file.name=rumenz.log
如何设置日志的级别启动Lession10Application,浏览器访问http://127.0.0.1:8080/rumenz/index查看当前目录下的rumenz.log会发现里面有日志内容。当然控制台也会输出。
日志级别总共有TRACE SpringBoot默认的日志级别是INFO,我们将SpringBoot的默认日志级别改成WARN`
application.properties
logging.level.root=WARN
启动Lession10Application,看控制台
root是项目所有的日志级别。启动成功了,但是没有啥日志输出。我们把默认的日志级别设置成WARN,按照层级关系INFO,DEBUG,TRACE的日志都不输出。
我们在application.properties将root的日志级别改成INFO,自己的写的业务包日志级别改成DEBUG
logging.level.root=INFO //root日志以INFO级别输出信息 logging.level.com.rumenz.lession10.controller.config=WARN //指定config包下的类以WARN级别输出
我们在RumenzConfig配置类中输出了一个INFO级别的日志。
@Slf4j
@Configuration
public class RumenzConfig {
@Bean
public User user(){
log.info("这是info级别日志");
return new User(1, "rumenz.com");
}
}
@Data
@AllArgsConstructor
class User{
private Integer id;
private String name;
}
批量设置日志级别启动Lession10Application,看控制台发现log.info("这是info级别日志");没有输出。
如果我们想给com.rumenz.lession10.controller和com.rumenz.lession10.controller.service设置统一的日志级别。
application.properties中客户配置,包和包之间用英文逗号分隔
logging.group.rumenz=com.rumenz.lession10.controller,com.rumenz.lession10.controller.service logging.level.rumenz=INFO日志的其它配置项
logging.config 日志配置;logging.logback.rollingpolicy.max-file-size (低版本用logging.file.max-size)最大日志文件大小;logging.logback.rollingpolicy.max-history(低版本logging.file.max-history)最大归档文件数量;logging.pattern.console 控制台输出的日志模式;logging.pattern.dateformat 日志的日期格式;logging.pattern.file 默认使用日志模式logging.pattern.level 日志级别 logging.pattern.console
用来指定控制台日志输出的格式。application.properties可以配置
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-6level %logger- %msg%n
logging.pattern.file
用来指定文件中日志输出的格式。application.properties可以配置
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-6level %logger- %msg%n
上面各个符号参数的含义
%d{yyyy-MM-dd HH:mm:ss}——日志输出时间%thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用%-6level——日志级别,并且使用5个字符靠左对齐%logger- ——日志输出者的名字%msg——日志消息%n——平台的换行符
本小结源码地址:
GitHub:https://github.com/mifunc/springboot/tree/main/lession10Gitee:https://gitee.com/rumenz/springboot/tree/master/lession10https://rumenz.com/rumenbiji/springboot-log.html
介绍
我的博客 https://rumenz.com/ ,我的工具箱 https://tooltt.com/微信公众号:【入门小站】
关注【入门小站】回复【1001】获取 linux常用命令速查手册关注【入门小站】回复【1003】获取 LeetCode题解【java语言实现】关注【入门小站】回复【1004】获取 Java基础核心总结关注【入门小站】回复【1009】获取 阿里巴巴Java开发手册



