Spring boot 日志输出到文件配置

spring boot 提供了很多开箱即用的配置功能,比容说logback

通过在application.ymlapplication.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 看到

file-appender.xml

Spring boot 日志默认的配置文件:

  1. org/springframework/boot/logging/logback/base.xml
  2. org/springframework/boot/logging/logback/defaults.xml 定义包括日志格式的变量

可以自己写logback-spring.xml文件并导入(<inlcude></include>)上面介绍的文件来自定义日志,简化开发。

更多日志配置参数

注意:上面介绍的配置文件中通过有${...}的方式引用的环境变量,你可以在这里 Spring boot log 找到它们对应的yaml或properties文件的变量名称。

下面使用properties的方式描述变量名称:

变量名意义
logging.file日志文件的名。
logging.file.max-size日志文件最大尺寸,超过将会自动压缩,单位如: MB、GB…。
logging.file.max-history日志文件存放的日期,单位:Day(天) 。
logging.path日志文件,以及压缩的日志文件存放的路径。
logging.pattern.console控制台日志输出格式。
logging.pattern.dateformat日志输出的时间格式。
logging.pattern.file文件日志输出格式。

测试

配置文件如下:

logging:
  file:
    max-size: 1MB
    max-history: 1
  path: D:\log\
  1. 新建一个Spring boot 项目,在启动类上加入注解@EnableScheduling开启定时任务。
  2. 创建新建一个静态的日志对象Logger,使用一个简单的方法让其调用Logger对象打印日志。
  3. 创建一个简单的void log()方法让其调用Logger对象打印日志。
  4. 然后在该方法上加上@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文件外,其他超时的文件都被自动删除。

参考

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值