java - Spring boot slf4j/log4j 禁用每日 RollingFilePolicy

标签 java spring spring-boot log4j slf4j

我的 Spring boot 应用程序每天都会创建一个新的存档(名称类似于 logging.log.2019-08-30.0.gz)并开始记录新文件。无论过去了多少天,禁用此功能并让记录器登录到旧文件的方法是什么?

我大约 1.5 年前创建了一个 Spring boot 应用程序,它的记录器没有这种行为,但我最近创建的记录器有这种行为。 也许这与新版本有关?

我使用几乎完全相同的配置,但仍然......每天都会发生新的日志。我尝试了很多在网上找到的东西,但所有帖子都讨论如何添加它,而不是如何删除它。

以下是与登录 application.properties 相关的所有设置(我不使用任何类型的额外配置):

logging.level.root=INFO
logging.level.org=WARN
logging.level.com=WARN
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} %c{1} - %msg%n
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %c - %msg%n
logging.file=logging.log
logging.file.max-size=1GB

pom.xml 中依赖项的完整列表(所有最新版本):

spring-boot-starter-data-jpa
thymeleaf-spring3
spring-boot-starter-security
spring-boot-starter-web
spring-boot-starter-mail
mysql-connector-java
spring-boot-configuration-processor

我创建和使用记录器的方式:

private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(MyController.class);
...
log.info("My controller did something!");

最佳答案

经过几个小时的搜索如何在不使用 logback.xml 的情况下删除 RollingFilePolicy ,我放弃了。因此,为了实现它(并保留当前的日志附加程序),我在 src/main/resources 文件中添加了一个 logback.xml 文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include
        resource="org/springframework/boot/logging/logback/defaults.xml" />
    <property name="LOG_FILE"
        value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}" />


    <appender name="FILE"
        class="ch.qos.logback.core.FileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_FILE}</file>
    </appender>
    <appender name="CONSOLE"
        class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

我根据 org/springframework/boot/logging/logback/ 包中的 spring 日志默认设置创建了它,忽略了 FileAppender.xml 文件。

请注意,正如 Spring 的 github repository 中所示,默认日志记录配置正在更改,并且这些 XML 文件不存在。

关于java - Spring boot slf4j/log4j 禁用每日 RollingFilePolicy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57964371/

相关文章:

java - 将一个 Jpanel 的内容添加到另一个 Jpanel 中 - Java Swings

java - 如何正确注释我的类

java - 如何使用 Jackson 自动解析 Spring Boot 应用程序中的 JSON

java - Spring Boot Security 匿名授权

java - 我无法推送 - jar :0. 0.1-SNAPSHOT : Could not find artifact org. springframework :spring-test:jar:5. 1.4.BUILD-SNAPSHOT

JAVA 比较何时计算为 boolean 值?在运行时还是在编译时?

java - Play 中的 PlayMagicForJava 错误!框架应用?

java - Spring无法配置授权服务器

Java AES加密: need files to decrypt properly in freely available decryptor tools

java - 带有 Spring Boot 的 Docker 和 Eureka 无法注册客户端