Spring Boot中正确使用Log的详细总结
1. 概要
在本文中我们将总结Spring Boot中可用的主要日志框架的使用和配置。
Spring Boot内部模块都使用Commons Logging来记录日志,但是底层日志框架是可以替换的,支持的日志框架有:Java Util Logging 、Log4J2和Logback并为上述框架提供了默认配置。在默认情况下,日志记录器都预先配置为使用控制台输出,同时还提供可选的文件输出。
通常,当项目中使用Spring boot Starters 时,Logback作为默认日志框架。
当将应用程序部署到servlet容器或应用程序服务器时,通过Java Util Logging API记录的日志不会路由到应用程序的日志。这可以防止部署到容器或其他应用程序执行的日志记录出现在应用程序的日志中。
2. 初始化设置
让我们首先创建一个Spring boot web应用程序, 推荐的方法是使用Spring Initializr。接下来让我们创建一个类文件LoggingController:
@RestController
public class LoggingController {
Logger logger = LoggerFactory.getLogger(LoggingController.class);
@RequestMapping("/")
public String index() {
logger.trace("A TRACE Message");
logger.debug("A DEBUG Message");
logger.info("An INFO Message");
logger.warn("A WARN Message");
logger.error("An ERROR Message");
return " hello log ";
}
}
一旦我们启动web应用程序,我们就可以通过访问http://localhost:8080/,来触发这些日志
3. 日志等级
Spring Boot还允许我们通过环境变量来对日志级别设置。有几种方法可以做到这一点。
- 第一种方式,我们可以通过VM参数来设置:
-Dlogging.level.org.springframework=TRACE
-Dlogging.level.com.baeldung=TRACE
mvn spring-boot:run
-Dspring-boot.run.arguments=--logging.level.org.springframework=TRACE,--logging.level.com.baeldung=TRACE
- 第三种方式,使用application.properties 配置文件设置:
logging.level.root=WARN
logging.level.com.baeldung=TRACE
- 第四种方式,通过设置特定logging framework的配置文件:
前面提到Spring Boot Starter 默认情况下使用Logback作为日志框架。让我们来看看如何定义一个Logback配置文件片段,其中我们设置了两个独立包的级别:
<logger name="org.springframework" level="INFO" />
<logger name="com.baeldung" level="INFO" />
如果包的日志级别使用上面提到的不同配置方式定义多次,但是使用不同的日志级别,那么日志输出将使用最低级别
例如,如果我们同时使用Logback配置文件、Spring Boot 属性文件和环境变量设置日志级别,那么日志级别请求级别中最低的TRACE级别
4. 默认日志框架 Logback
当使用 spring boot starters 的时候,Logback作为默认的日志框架
Spring Boot用模式和ANSI颜色对其进行了预先配置,以使标准输出更具可读性。<