log4j2 - 以編程方式更改 RollingFileAppender 的最大文件大小 (log4j2 - programmatically change max file size of RollingFileAppender)


問題描述

log4j2 ‑ 以編程方式更改 RollingFileAppender 的最大文件大小 (log4j2 ‑ programmatically change max file size of RollingFileAppender)

我使用的是 Log4j 2.3,而不是最新的 2.x 版本,因為我的代碼需要在 Java 1.6 上運行。無論如何,我正在以編程方式配置所有內容。當我使用 RollingFileAppender.createAppender 創建 RollingFileAppender 時,我作為策略參數傳入:

SizeBasedTriggeringPolicy.createPolicy("10MB");

到目前為止,一切都很好。但我需要能夠在運行時以編程方式更改最大文件大小。我可以用 log4j 1.2.x 做到這一點,因為我的 RollingFileAppender 有一個 setMaxFileSize() 方法。但是在 2.3 中,RollingFileAppender 的 triggerPolicy 字段是只讀的,決定最大文件大小的 SizeBasedTriggeringPolicy 似乎是不可變的。關於我能看到的唯一可行的方法是刪除附加器並用新的替換它。有誰知道更簡單的解決方案?


參考解法

方法 1:

The answer is, in Log4j 2.3 you can't do what I'm trying to do. This was addressed in this bug fix:

Changes in SizeBasedTriggeringPolicy has no effects when automatic reconfiguration is on.

The fix will be released with log4j 2.5, which unfortunately for me, requires Java 1.7.

(by Dave 114Dave 114)

參考文件

  1. log4j2 ‑ programmatically change max file size of RollingFileAppender (CC BY‑SA 2.5/3.0/4.0)

#log4j2 #java #log4j






相關問題

Làm cách nào để thêm phần phụ Log4J2 vào thời gian chạy theo chương trình? (How to add Log4J2 appenders at runtime programmatically?)

使用 Spring 和 Log4j2 的 Classloader-Leak (Classloader-Leak with Spring and Log4j2)

log4j2 RolllingFileAppender filePattern 創建日期錯誤 (log4j2 RolllingFileAppender filePattern create a wrong date)

將時間戳添加到日誌文件名時出錯 (log4j2) (Error adding timestamp to log file name (log4j2))

log4j2 - 以編程方式更改 RollingFileAppender 的最大文件大小 (log4j2 - programmatically change max file size of RollingFileAppender)

log4j 沒有登錄到文件或控制台 (log4j is not logging into file or console)

Log4j2 未在 Linux 中使用 Spring Boot 創建日誌文件 (Log4j2 not creating log file with Spring Boot in Linux)

application.properties 中的外部 log4j2.xml 文件路徑 (External log4j2.xml file path in application.properties)

使用 Spring 的依賴於配置文件的 log4j2 配置 (Profile-dependent log4j2 configuration with Spring)

從 log4j2.xml 訪問環境變量 (Accessing environment variable from log4j2.xml)

Spring Boot 應用程序中的內部 tomcat 停止響應調用 (internal tomcat inside spring boot application stops responding to calls)

如何在 mule 應用程序中實現 log4j2 (2.14.0) 'JSON 模板佈局'? (How can I implement log4j2 (2.14.0) 'JSON Template Layout' in a mule application?)







留言討論