2014-09-30 18 views
5

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ũ?

Trả lời

2

Mặc dù đây là một câu hỏi cũ người khác có thể tìm thấy nó hữu ích, tôi tin rằng nó là vì

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); 

nên

RollingFileAppender.createAppender(dir + "log\\test.log", dir + "log\\test-%i.log", 
      "true", "File", "false", "128", "true", policy, strategy, layout, (Filter) null, "false", "false", (String) null, config); 

Đối số thứ ba là lựa chọn append https://logging.apache.org/log4j/2.x/log4j-core/apidocs/org/apache/logging/log4j/core/appender/RollingFileAppender.html

Các vấn đề liên quan