Spring 启动 slf4j/log4j 禁用每日 RollingFilePolicy
Spring boot slf4j/log4j disable daily RollingFilePolicy
我的 Spring 启动应用程序每天都在创建一个新存档(命名为 logging.log.2019-08-30.0.gz
)并开始记录一个新文件。禁用此功能并让记录器登录到旧文件的方法是什么,无论过去多少天?
我在大约 1.5 年前创建了一个 Spring 引导应用程序,它的记录器没有这种行为,但我最近创建的那个有。 可能和新版本有关?
我使用几乎完全相同的配置,但仍然...每天都有新日志。我在网上找了很多东西,但所有帖子都在谈论如何添加它,而不是如何删除它。
以下是与登录相关的所有设置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>
我根据 spring 在 org/springframework/boot/logging/logback/
包中记录默认值创建它,忽略 FileAppender.xml
文件。
请注意,正如 Spring 的 github repository 中所示,默认日志记录配置正在更改并且这些 XML 文件不存在。
我的 Spring 启动应用程序每天都在创建一个新存档(命名为 logging.log.2019-08-30.0.gz
)并开始记录一个新文件。禁用此功能并让记录器登录到旧文件的方法是什么,无论过去多少天?
我在大约 1.5 年前创建了一个 Spring 引导应用程序,它的记录器没有这种行为,但我最近创建的那个有。 可能和新版本有关?
我使用几乎完全相同的配置,但仍然...每天都有新日志。我在网上找了很多东西,但所有帖子都在谈论如何添加它,而不是如何删除它。
以下是与登录相关的所有设置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>
我根据 spring 在 org/springframework/boot/logging/logback/
包中记录默认值创建它,忽略 FileAppender.xml
文件。
请注意,正如 Spring 的 github repository 中所示,默认日志记录配置正在更改并且这些 XML 文件不存在。