diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
index 6a8f2e845dd0f3..4dd98b28da11e5 100644
--- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
+++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java
@@ -2612,6 +2612,12 @@ public class Config extends ConfigBase {
//==========================================================================
// begin of cloud config
//==========================================================================
+ @ConfField(description = {"是否启用FE 日志文件按照大小删除策略,当日志大小超过指定大小,删除相关的log。默认为按照时间策略删除",
+ "Whether to enable the FE log file deletion policy based on size, "
+ + "where logs exceeding the specified size are deleted. "
+ + "It is disabled by default and follows a time-based deletion policy."},
+ options = {"age", "size"})
+ public static String log_rollover_strategy = "age";
@ConfField public static int info_sys_accumulated_file_size = 4;
@ConfField public static int warn_sys_accumulated_file_size = 2;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/Log4jConfig.java b/fe/fe-core/src/main/java/org/apache/doris/common/Log4jConfig.java
index 320cdd6114bcef..8c840a876bb69a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/common/Log4jConfig.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/common/Log4jConfig.java
@@ -39,81 +39,101 @@
public class Log4jConfig extends XmlConfiguration {
private static final long serialVersionUID = 1L;
- // CHECKSTYLE OFF
- private static String xmlConfTemplate = "\n"
- + "\n\n"
- + "\n"
- + " \n"
- + " "
- + " \n"
- + " %d{yyyy-MM-dd HH:mm:ss,SSS} %p (%t|%tid)%m%n\n"
- + " \n"
- + " "
- + " \n"
- + " \n"
- + " %d{yyyy-MM-dd HH:mm:ss,SSS} %p (%t|%tid)%m%n\n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " %d{yyyy-MM-dd HH:mm:ss,SSS} %p (%t|%tid)%m%n\n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " %d{yyyy-MM-dd HH:mm:ss,SSS} [%c{1}] %m%n\n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + " \n"
- + "";
- // CHECKSTYLE ON
+ private static StringBuilder xmlConfTemplateBuilder = new StringBuilder();
+
+ private static void getXmlConfByStrategy(final String size, final String age) {
+ if (Config.log_rollover_strategy.equalsIgnoreCase("size")) {
+ xmlConfTemplateBuilder
+ .append(" \n")
+ .append(" \n")
+ .append(" \n");
+ } else {
+ // default age
+ xmlConfTemplateBuilder
+ .append(" \n");
+ }
+ }
+
+ static {
+ // CHECKSTYLE OFF
+ xmlConfTemplateBuilder.append("\n")
+ .append("\n\n")
+ .append("\n")
+ .append(" \n")
+ .append(" ")
+ .append(" \n")
+ .append(" %d{yyyy-MM-dd HH:mm:ss,SSS} %p (%t|%tid)%m%n\n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" %d{yyyy-MM-dd HH:mm:ss,SSS} %p (%t|%tid)%m%n\n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n");
+
+ getXmlConfByStrategy("info_sys_accumulated_file_size", "sys_log_delete_age");
+
+ xmlConfTemplateBuilder
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" %d{yyyy-MM-dd HH:mm:ss,SSS} %p (%t|%tid)%m%n\n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n");
+
+ getXmlConfByStrategy("warn_sys_accumulated_file_size", "sys_log_delete_age");
+
+ xmlConfTemplateBuilder
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" %d{yyyy-MM-dd HH:mm:ss,SSS} [%c{1}] %m%n\n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n");
+
+ getXmlConfByStrategy("audit_sys_accumulated_file_size", "audit_log_delete_age");
+
+ xmlConfTemplateBuilder
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append(" \n")
+ .append("");
+ // CHECKSTYLE ON
+ }
private static StrSubstitutor strSub;
private static String sysLogLevel;
@@ -134,7 +154,7 @@ public class Log4jConfig extends XmlConfiguration {
public static boolean foreground = false;
private static void reconfig() throws IOException {
- String newXmlConfTemplate = xmlConfTemplate;
+ String newXmlConfTemplate = xmlConfTemplateBuilder.toString();
// sys log config
// ATTN, sys_log_dir is deprecated, use LOG_DIR instead