java - 日志记录停止滚动到新文件

标签 java spring jakarta-ee logging log4j

当前的 spring 应用程序采用 slf4jlog4jslf4j-log4j12 作为日志记录实用程序。

问题是,

(1) 每次使用外部工具(写字板或ultraedit)打开日志文件时,文件都会停止滚动。这是非常烦人的,因为文件可能会增长到 10 GB 左右。

(2) MaxFileSize 设置为 10Mb,但每次日志文件滚动到 20Mb。

这是配置

log4j.rootLogger=DEBUG, ROL
log4j.appender.ROL=org.apache.log4j.RollingFileAppender
log4j.appender.ROL.Encoding=Unicode
log4j.appender.ROL.File=D:\\IamdWatchingYou.log
log4j.appender.ROL.MaxFileSize=10000KB
log4j.appender.ROL.MaxBackupIndex=10
log4j.appender.ROL.layout=org.apache.log4j.PatternLayout
log4j.appender.ROL.layout.ConversionPattern=%d -- %p -- %c -- %m%n

这个问题通常发生在所有主要应用服务器(Tomcat、websphere,有时还有 Jboss)中。

问题是,根本原因是什么(兼容性或配置)。如果选择其他日志记录实现(Logback 或 JDK 日志记录),是否可以解决问题?我只是希望停止创建巨大的日志文件。

最佳答案

这是翻转逻辑的正常行为,您可以在 log4j 类 RollingFileAppender 中看到它。

翻转逻辑尝试将当前日志文件重命名为包含时间戳的名称,如果由于文件被另一个应用程序打开等原因而未能成功,则翻转逻辑将默默失败并且不会执行任何更改(不记录警告或错误)。

这意味着日志记录将继续在同一文件中进行,直到下一次成功执行翻转逻辑。

关于java - 日志记录停止滚动到新文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21837206/

相关文章:

java - 了解 Java 匿名类?

java - 将 XML 配置直接嵌入到 Spring 应用程序上下文中

SpringBoot : Unable to find a single main class from the following candidates

java - Spring:如何将配置从应用程序传递到库

java - EJB 2.1 项目中应用程序范围的资源引用

java - Struts重定向问题

java - 检查 "Instant"的两个实例在 Java 8 中是否在同一日期

java - 没有 SockJS/StompJS 的 Spring STOMP 服务器

java - 将外部自定义绑定(bind)应用于包含的架构

java - 添加 Fresco 后构建出错