SpringBoot之LogBack配置详解
1. 前言
LogBack是一款优秀的日志框架,与Log4j类似,但在性能方面更优秀。SpringBoot默认使用Logback来做日志框架,通过使用Logback我们可以很方便地对日志进行管理和查看。
本文主要介绍SpringBoot如何进行LogBack的配置,并集中介绍一系列常用的LogBack配置方法。
2. 引入依赖
在使用LogBack之前,我们需要在pom.xml文件中引入LogBack相关的依赖。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.2</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
其中,spring-boot-starter-web是SpringBoot所需的Web依赖包,logback-core是LogBack的核心依赖包,而logback-classic则是LogBack的经典依赖包,包含了除核心包之外的所有功能。
3. 基础配置
在SpringBoot中,可以通过在application.yml文件中进行如下配置,来改变LogBack默认的行为。
logging:
level:
root: info
com:
theman.model: debug
在上述配置中,首先设置了root日志级别为info,意味着只输出大于等于info级别的日志,没有包含在com.theman.model包中的类则继承root级别,输出大于等于info级别的日志,而com.theman.model包中的类则被配置为debug级别。也就是说,包含在该包中的类只输出大于等于debug级别的日志。
4. 输出到文件
将日志输出到文件中是一种非常常见的需求。在LogBack中,我们可以使用FileAppender来实现将日志输出到文件中。
在application.yml文件中可以通过以下配置来实现日志文件输出:
logging:
level:
root: info
com:
theman.model: debug
file:
name: myapp.log
path: logs
上述配置中,我们首先保留之前的日志级别的配置,之后则新增了一个file配置项,其中name配置项指定了输出日志文件的名称,而path配置项则指定日志文件的输出路径。
5. 多环境配置
在实际开发中,我们可能会在开发环境和生产环境中分别进行LogBack的配置,此时我们就需要进行多环境配置。SpringBoot提供了常用的Profiles功能来实现该功能。
我们可以在application.yml文件中进行如下配置:
spring:
profiles:
active: dev
---
spring.profiles: dev
logging:
level:
root: debug
com:
theman.model: debug
---
spring.profiles: pro
logging:
level:
root: info
com:
theman.model: info
file:
name: myapp.log
path: /data/logs
上述配置中,我们首先指定了当前的环境为dev,之后则使用了Profiles语法,来实现在不同的环境中设置不同的配置。当当前环境为dev时,输出debug级别的日志;当当前环境为pro时,则将debug级别改为info级别,并将日志输出到指定的路径。
6. 总结
Logback是一款优秀的日志框架,通过以上配置方法,我们可以对Logback进行一些常见的配置。SpringBoot默认使用Logback进行日志管理,因此我们应该熟悉Logback的使用方法,以便更好地开发SpringBoot应用程序。
示例
示例一:基本日志输出
在application.yml文件中进行如下配置:
logging:
level:
root: info
在代码中使用logback进行日志输出:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TestController {
private static Logger logger = LoggerFactory.getLogger(TestController.class);
@RequestMapping("/test")
@ResponseBody
public String test() {
logger.info("this is a test log.");
return "ok";
}
}
在浏览器中访问http://localhost:8080/test,可在控制台中看到类似如下的输出:
2021-07-07 11:31:19.392 INFO 57552 --- [nio-8080-exec-1] c.l.s.controller.TestController : this is a test log.
其中 INFO 表示日志级别,57552是线程ID,nio-8080-exec-1表示请求线程池中的线程名,c.l.s.controller.TestController是输出日志的类名。最后是输出的日志内容:this is a test log。
示例二:输出到文件
在application.yml文件中进行如下配置:
logging:
level:
root: info
file:
name: myapp.log
在代码中使用logback进行日志输出:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TestController {
private static Logger logger = LoggerFactory.getLogger(TestController.class);
@RequestMapping("/test")
@ResponseBody
public String test() {
logger.info("this is a test log.");
return "ok";
}
}
在浏览器中访问http://localhost:8080/test,可在项目的logs目录下看到myapp.log文件,其中包含了类似如下的内容:
2021-07-07 11:31:19.392 INFO 57552 --- [nio-8080-exec-1] c.l.s.controller.TestController : this is a test log.
说明已经成功将日志输出到了文件中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot之LogBack配置详解 - Python技术站