Tôi muốn tạo và bật một trình bổ sung cho một phương thức cụ thể gọi MyMethod(), có đầu ra nhật ký được cho là đi đến tệp hiện tại tại "logFilePath" .Log4j: Tạo/sửa đổi các trình bổ sung khi chạy, tệp nhật ký được tạo lại và không được nối thêm
Tôi không muốn bao gồm ứng dụng này trong tệp cấu hình xml, vì vậy tôi đã nghĩ tạo nó trong thời gian chạy.
Trước tiên, tôi đã cố gắng sửa đổi các thuộc tính trình ghi nhật ký trong thời gian chạy và sau đó gọi activateOptions, ví dụ: thiết lập mức độ để DEBUG trước và thiết lập nó để Tắt trong khối cuối cùng, do đó đầu ra được đăng nhập chỉ trong khi phương pháp được sử dụng. Điều đó không hiệu quả.
Vấn đề của tôi ở đây là appender tạo lại một tệp mọi lúc và không thêm vào cùng một tệp. Điều này là cảm hứng của setAppend là đúng sự thật.
Tôi không quen thuộc với log4j, vì vậy vui lòng đề xuất phương pháp thay thế. Sau đây là mã mẫu để giải thích những gì tôi đang cố gắng.
private static FileAppender createNewAppender(String logFilePath) {
FileAppender appender = new FileAppender();
appender.setName("MyFileAppender");
appender.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n"));
appender.setFile(logFilePath);
appender.setAppend(true);
appender.setThreshold(Level.INFO);
appender.activateOptions();
Logger.getRootLogger().addAppender(appender);
return appender;
}
private static void removeAppender() {
Logger.getRootLogger().removeAppender(fileAppender) ; // ("MyFileAppender");
}
tôi gọi các phương pháp trên theo cách sau:
private static FileAppender fileAppender = null;
private static void myMethod(String logFilePath) {
try {
fileAppender = createNewAppender();
someOperation();
}
finally {
removeAppender();
fileAppender=null;
}
}