spring boot 提供了很多开箱即用的配置功能,比容说logback
通过在application.yml
或application.properties
文件中配置环境变量就可以使用。
配置
默认情况下Spring boot 的日志输出级别为: INFO
环境需求
- spring boot 2.0.0
指定包日志输出等级
日志还针对某个包指定日志输出等级,如
logging:
level:
edu.hznu.demo: debug
上面配置表明,把edu.hznu.demo
的日志输出等级调整为 debug 等级。
日志文件配置
把日志输出到文件在application.yml
配置
logging:
file: you_application_name.log
path: /var/logs/you_application_name/
改配置表明,日志将会被输出到明文you_application_name.log
的文件中,并存储到/var/logs/you_application_name/
路径下面。
如果需要让日志超过一段时间自动切分并压缩,或删除可以加入下面配置:
logging:
file:
max-size: 10MB
max-history: 1
path: /var/logs/you_application_name/
上面配置表明日志文件超过10MB将会自动切分压缩,日志在存放1天(24小时)后将会自动删除。
注意: 如果配置日志的压缩大小和存放时间之后,由于Yaml数据结构的限制将无法自定以日志文件名称。如果还需要自定义日志的名称,你需要使用
.properties
格式键值对的方式配置。
实际上Springboot 默认对日志的处理是超过10MB压缩,不做删除处理,这一点可以从配置文件org/springframework/boot/logging/logback/file-appender.xml 看到
Spring boot 日志默认的配置文件:
- org/springframework/boot/logging/logback/base.xml
- org/springframework/boot/logging/logback/defaults.xml 定义包括日志格式的变量
- org/springframework/boot/logging/logback/console-appender.xml
- org/springframework/boot/logging/logback/file-appender.xml
可以自己写logback-spring.xml文件并导入(
<inlcude></include>
)上面介绍的文件来自定义日志,简化开发。
更多日志配置参数
注意:上面介绍的配置文件中通过有
${...}
的方式引用的环境变量,你可以在这里 Spring boot log 找到它们对应的yaml或properties文件的变量名称。
下面使用properties
的方式描述变量名称:
变量名 | 意义 |
| 日志文件的名。 |
| 日志文件最大尺寸,超过将会自动压缩,单位如: MB、GB…。 |
| 日志文件存放的日期,单位:Day(天) 。 |
| 日志文件,以及压缩的日志文件存放的路径。 |
| 控制台日志输出格式。 |
| 日志输出的时间格式。 |
| 文件日志输出格式。 |
测试
配置文件如下:
logging:
file:
max-size: 1MB
max-history: 1
path: D:\log\
- 新建一个Spring boot 项目,在启动类上加入注解
@EnableScheduling
开启定时任务。 - 创建新建一个静态的日志对象
Logger
,使用一个简单的方法让其调用Logger
对象打印日志。 - 创建一个简单的
void log()
方法让其调用Logger
对象打印日志。 - 然后在该方法上加上
@Scheduled(fixedRate = 10)
,其中fixedRate = 1
表示每隔1ms将调用该方法一次。
@SpringBootApplication
@EnableScheduling
public class BootLogTestApplication {
private static final Logger logger = LoggerFactory.getLogger(BootLogTestApplication.class);
/**
* 定时输出日志内容
*/
@Scheduled(fixedRate = 1)
public void log() {
logger.info("Logging...");
}
public static void main(String[] args) {
SpringApplication.run(BootLogTestApplication.class, args);
}
}
运行一段时间之后,我们到配置的输出路径检查日志是否已经,自动压缩
可以看到日志已经自动分割,并压缩存放了。下面测试是否会超时删除,通过修改windows的日期,来测试,注意请不要停止测试程序。
点击更改,观察文件夹中的日志是否已经删除
可以看到除了程序占用的spring.log
文件外,其他超时的文件都被自动删除。