Springboot 设置同时输出日志到文件

本文介绍了如何在Springboot项目中将日志输出到文件,而非仅仅局限于控制台。Springboot默认使用common logging,支持Java Util Logging、Log4j2、Logback等。默认情况下,日志只会输出到控制台,但通过设置logging.file.name和logging.file.path属性,可以在application.properties文件中配置日志文件的路径,实现日志写入文件。

实现

springboot 项目默认只把日志输出到控制台,现在需要输出到指定的日志文件 /var/logs/dg/foo/foo.log
只要一条语句:

logging:
  file:
    name: "/var/logs/dg/foo/foo.log"

原理

springboot 所有内部日志都使用 common logging 输出,但未限定具体的日志实现。
springboot 对 Java Util Log、Log4j2、Logback 提供默认配置,开发者可以选择其中一个,开箱即用,
springboot 默认配置把日志输出到控制台。

若是使用 springboot starter 创建的项目,springboot 选择 Logback 作为日志实现。
且恰当配置了 logback 的日志路由,确保任何使用 Java Util Logging, Commons Logging, Log4J, 或 SLF4J
的库都可以正常工作。

文件输出

默认,springboot 只把日志输出到控制台,不写入日志文件。通过配置 logging.file.name 和
logging.file.path 属性(比如在application.properties文件中设置)可以写日志到文件中。

  1. 不指定 logging.file.name 也不指定 logging.file.path:仅输出到控制台
  2. 指定 logging.file.name 但不指定 logging.file.path:输出到控制台以及 logging.file.name 指定的日志文件中。logging.file.name 可以是绝对路径,也可以是相对路径(相对于当前目录)。
  3. 不指定 logging.file.name,而指定 logging.file.path: 输出到控制台以及 ${logging.file.path}\spring.log。logging.file.path 可以是绝对路径,也可以是相对路径(相对于当前目录)。

PS:同时指定二者,效果与 2 等同。

参考资料

参考资料
Core Features | logging

在Spring Boot应用中实现按日期生成日志文件的需求,通常可以通过配置日志框架来完成。Spring Boot默认使用Logback作为日志框架,因此可以通过修改`application.yml`或`application.properties`文件来配置Logback以实现按日期分割日志文件。 以下是一个基于`application.yml`的示例配置,展示了如何设置Logback以按天为单位分割日志文件: ```yaml logging: pattern: file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" file: name: "logs/app.log" level: root: info ``` 上述配置中,`logging.file.name`指定了日志文件输出路径和文件名。为了实现按日期分割日志文件的功能,需要进一步配置Logback的`<rollingPolicy>`部分。这通常需要创建一个自定义的`logback-spring.xml`文件来实现更复杂的日志文件管理策略。下面是一个简单的例子,展示如何配置Logback以按天为单位滚动日志文件: ```xml <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>logs/app.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 每天生成一个新的日志文件 --> <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 可选: 保留最近30天的日志文件 --> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> </configuration> ``` 在这个配置中,`<fileNamePattern>`元素定义了日志文件的命名模式,其中`%d{yyyy-MM-dd}`表示日期,这样Logback会根据当前日期每天生成一个新的日志文件[^1]。同时,`<maxHistory>`元素用于指定保留的日志文件的最大天数,这里设置为30天。 通过这种方式,可以轻松地在Spring Boot应用中实现按日期分割日志文件的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值