一、说明
springBoot 默认使用 LogBack 日志系统,如果不需要更改为其他日志系统,比如 Log4j 等,则无需多余的配置,LogBack 默认将日志打印到控制台上。
二、配置
2.1 添加 maven 依赖
如果要使用 LogBack,原则上需要添加以下依赖,但是由于一般的 springBoot 项目都会引用 spring-boot-starter 或者 spring-boot-starter-web,而这两个依赖中都包含了对于 spring-boot-starter-logging 的依赖,所以无需额外添加依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
以下是默认配置启动下的日志显示情况
2.2 项目中打印日志
如何在我们日常的项目中打印日志呢,使用 LoggerFactory 即可,代码如下
@Controller
public class UserController {
private static final Logger LOGGER = LoggerFactory.getLogger(UserController.class);
@Autowired
UserService userService;
@RequestMapping("/listUser")
public String listUser(Model model) {
List<User> users = userService.findAll();
model.addAttribute("users", users);
LOGGER.info("........................我是默认的INFO级别的日志");
return "listUser";
}
}
访问请求,控制台打印出来的日志如下所示,springBoot 默认的日志级别是 INFO,设置 INFO 级别的日志所以可以显示。
2.3 存储日志文件
如何将日志信息存储到文件?在我们的 springBoot 工程中,修改 application.properies 文件,添加以下的配置。
下面的这两个配置不能同时存在,即只能配置一个,且 logging.file 优先级高,配置了两个标签,只有 logging.file 会生效。
# 该属性用来配置日志文件的路径
logging.path=c:/
# 该属性用来配置日志文件名,如果不配置,默认文件名为 spring.log
logging.file=springboot.log
当只配置了 logging.path=c:/ 标签时,启动工程,会在 C 盘生成一个默认名称为 spring.log 的文件,文件的内容和控制台的内容一致。
当只配置了 logging.file=springboot.log 标签时,启动工程,会在工程目录下生成一个 springboot.log 的配置文件
2.4 设置日志级别
日志级别有 TRACE < DEBUG < INFO < WARN < ERROR < FATAL,且级别是逐渐提供,如果日志级别是 INFO,则意味着 TRACE 和 DEBUG 级别的日志都看不到。
在上面的例子中我们打印了一个 INFO 级别的日志,因为 SpringBoot 默认级别就是 INFO,如果我们改为 WARN,我们就看不到这行日志了。
在 application.properties 中添加
logging.level.root=warn
这里是用的 root 级别,即项目的所有日志,我们也可以使用 package 级别,即指定包下使用相应的日志级别。
项目启动成功了,但是几乎没有内容,这是因为之前打印的日志级别都是 INFO,这里设置为 WARN,所以 INFO 级别的日志都不显示。
这里我们可以设置 root 还是 INFO 级别,将指定包下的日志级别设置为 WARN,当发生请求时并没有打印 debug 和 info 级别的日志。
logging.level.root=info
logging.level.com.mb.controller=warn
2.5 设置日志输出格式
如何定制自己的日志格式呢?在 applicaiton.properties 中添加
# %d{HH:mm:ss.SSS}:日志输出时间
# %thread:输出日志的进程名字,这在Web应用以及异步任务处理中很有用
# %-5level:日志级别,并且使用5个字符靠左对齐
# %logger- :日志输出者的名字
# %msg:日志消息
# %n:平台的换行符
# logging.pattern.console 用于设定日志输出格式
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger- %msg%n
# logging.pattern.file 用于设定输出到 log 文件的日志格式
logging.pattern.file=%d{yyyy-MM-dd HH:mm} [%thread] %-5level %logger- %msg%