springboot 日志框架
Posted abin-c
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot 日志框架相关的知识,希望对你有一定的参考价值。
Java 有很多日志系统,例如,Java Util Logging, Log4J, Log4J2, Logback 等。Spring Boot 也提供了不同的选项,比如日志框架可以用 logback 或 log4j 等。
默认的日志框架 logback
例如,maven 依赖中添加了 spring-boot-starter-logging。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
那么, Spring Boot 应用将自动使用 logback 作为应用日志框架, Spring Boot 启动的时候,由 org.springframework.boot.logging.Logging.Logging-Application-Listener 根据情况初始化并使用。
值得注意的是,默认情况下,Spring Boot 使用 logback 作为应用日志框架。因为 spring-boot-starter 其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。
日志级别
默认情况下,Spring Boot 配置 ERROR, WARN, INFO 三种日志级别。如果需要 Debug 级别的日志。在 src/main/resources/application.properties 中配置数据源信息。
debug=true
此外,配置 logging.level.* 来具体输出哪些包的日志级别。
例如
logging.level.root=INFO logging.level.org.springframework.web=DEBUG
日志文件
默认情况下, Spring Boot 日志只会输出到控制台,并不会写入到日志文件,因此,对于正式环境的应用,我们需要通过在 application.properites 文件中配置 logging.file 文件名称和 logging.path 文件路径,将日志输出到日志文件中。
logging.path = /var/tmp
logging.file = xxx.log
logging.level.root = info
如果只配置 logging.path,在 /var/tmp文件夹生成一个日志文件为 spring.log。如果只配置 logging.file,会在项目的当前路径下生成一个 xxx.log 日志文件。
值得注意的是,日志文件会在 10MB 大小的时候被截断,产生新的日志文件。
常用的日志框架 log4j
如果,我们希望使用 log4j 或者 log4j2,我们可以采用类似的方式将它们对应的依赖模块加到 Maven 依赖中。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
</dependency>
或者
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
log4j 依赖模块加到 Maven 依赖中后,在 src/main/resources 目录下加入 log4j-spring.properties 配置文件。Spring Boot 官方推荐优先使用带有 –spring 的文件名作为你的日志配置, 例如 log4j-spring.properties,当然使用 log4j.properties 也是支持的。
通过如下配置,设定root日志的输出级别为INFO,appender为控制台输出stdout
# LOG4J配置
|
输出到文件
在开发环境,我们只是输出到控制台没有问题,但是到了生产或测试环境,或许持久化日志内容,方便追溯问题原因。可以通过添加如下的appender内容,按天输出到不同的文件中去,同时还需要为log4j.rootCategory
添加名为file的appender,这样root日志就可以输出到logs/all.log
文件中了。
#
|
分类输出
当我们日志量较多的时候,查找问题会非常困难,常用的手段就是对日志进行分类,比如:
- 可以按不同package进行输出。通过定义输出到
logs/my.log
的appender,并对com.didispace
包下的日志级别设定为DEBUG级别、appender设置为输出到logs/my.log
的名为didifile
的appender。
# com.didispace包下的日志配置
|
- 可以对不同级别进行分类,比如对ERROR级别输出到特定的日志文件中,具体配置可以如下。
|
以上是关于springboot 日志框架的主要内容,如果未能解决你的问题,请参考以下文章