問題描述
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.