Tôi đang sử dụng log4j2 theo lập trình mà không có tệp cấu hình, nhưng cấu hình nó trong mã. Tôi đang cố gắng sử dụng log4j2 RollingFileAppender
để lưu 10 tệp nhật ký cuối cùng. Tôi đã thử giới hạn kích thước tệp bằng cách sử dụng SizeBasedTriggeringPolicy
. Giới hạn kích thước hoạt động nhưng nó không tạo ra các tệp nhật ký cũ và chỉ tiếp tục xóa và ghi vào một tệp nhật ký gốc.Cách lập cấu hình có lập trình cho log4j2 RollingFileAppender
public static void configLog() {
String dir = System.getProperty("java.io.tmpdir") + "test\\";
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
final Configuration config = ctx.getConfiguration();
PatternLayout layout = PatternLayout.newBuilder().withConfiguration(config).withPattern(PatternLayout.SIMPLE_CONVERSION_PATTERN).build();
SizeBasedTriggeringPolicy policy = SizeBasedTriggeringPolicy.createPolicy("1KB");
DefaultRolloverStrategy strategy = DefaultRolloverStrategy.createStrategy("10", "0", null, null, config);
RollingFileManager fileManager = RollingFileManager.getFileManager(dir + "log\\test.log", dir + "log\\test-%i.log", false, false, policy, strategy, null, layout, 128);
policy.initialize(fileManager);
RollingFileAppender appender = RollingFileAppender.createAppender(dir + "log\\test.log", dir + "log\\test-%i.log",
"false", "File", "false", "128", "true", policy, strategy, layout, (Filter) null, "false", "false", (String) null, config);
appender.start();
config.addAppender(appender);
AppenderRef ref = AppenderRef.createAppenderRef("File", Level.INFO, null);
AppenderRef[] refs = new AppenderRef[] { ref };
LoggerConfig loggerConfig = LoggerConfig.createLogger("true", Level.INFO, LogManager.ROOT_LOGGER_NAME, "true",
refs, null, config, null);
loggerConfig.addAppender(appender, Level.INFO, null);
config.addLogger(LogManager.ROOT_LOGGER_NAME, loggerConfig);
ctx.updateLoggers();
}
Tôi không tìm thấy nhiều ví dụ về cách định cấu hình đăng nhập bằng java nhưng tôi cần cho ứng dụng của mình. Ví dụ từ nơi tôi đã lấy hầu hết mã ở đây là http://logging.apache.org/log4j/2.x/manual/customconfig.html (phần mã thứ hai).
Tại sao nó không tạo/lưu tệp nhật ký cũ?