hơi bối rối sở hữu mô hình của FileHandler thể được sử dụng cho điều này
handlers=java.util.logging.FileHandler
# Default global logging level.
.level=INFO
#logging level for the foo.bar package
foo.bar.level=CONFIG
java.util.logging.FileHandler.pattern=%h/java%u.log
Một mô hình bao gồm một chuỗi bao gồm các thành phần đặc biệt sau đó sẽ được thay thế trong thời gian chạy:
"/" các tên đường dẫn địa phương tách
"% t" hệ thống thư mục tạm thời
"% h" giá trị của "user.home" hệ thống prop erty
"% g" số thế hệ này sang phân biệt các bản ghi xoay
"% u" một số duy nhất để giải quyết xung đột
"%%" dịch để một dấu phần trăm đơn "%"
Nếu bạn muốn đăng nhập vào nhiều file thì bạn có thể làm điều đó bằng cách thiết lập nhiều bộ xử lý cho nhiều tên logger
#FileHandler for file1
java.util.logging.FileHandler.pattern = logging_property_test.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
#FileHandler for file2
logging.FileHandler2.pattern = logging_property_test2.log
logging.FileHandler2.limit = 50000
FileHandler.count = 1
logging.FileHandler2.formatter = java.util.logging.SimpleFormatter
#setting handler for logger1
logging.PropertyTestingLogger.handlers=java.util.logging.FileHandler
#setting handler for logger2
logging.PropertyTestingLogger2.handlers=logging.FileHandler2
như bạn có thể thấy các trick là có một logging.FileHandler2 đó là một lớp tùy chỉnh và không làm gì nhưng mở rộng FileHandler
package logging;
import java.io.IOException;
import java.util.logging.FileHandler;
public class FileHandler2 extends FileHandler {
public FileHandler2() throws IOException, SecurityException {
super();
}
}
nền: tiếc là người sáng tạo của Java đã không mong đợi bất cứ ai đăng nhập vào nhiều tập tin. Nếu bạn nhìn vào nguồn gốc của java.util.logging.FileHandler bạn sẽ tìm thấy, đó là tài sản mẫu được nạp bởi tên lớp:
public class FileHandler extends StreamHandler {
private String pattern;
private void configure() {
String cname = getClass().getName();
pattern = manager.getStringProperty(cname + ".pattern", "%h/java%u.log");
Nhưng làm cách nào tôi có thể sử dụng các mẫu này để xác định rằng nó chỉ ảnh hưởng đến trình ghi nhật ký có tên của tôi (org.imixs.workflow)? Tôi không muốn chuyển hướng các thông điệp máy chủ chung vào tệp nhật ký cụ thể của ứng dụng của mình. – Ralph
Tôi đã cập nhật bài đăng của mình cho phù hợp. Trong ví dụ, mức nhật ký mặc định được đặt thành thông tin, nhưng gói foo.bar để cấu hình –
có - nhưng câu hỏi của tôi là: có thể đặt một tệp đầu ra riêng cho trình ghi nhật ký 'foo.bar' hay không. Tôi biết rằng bạn có thể chỉ định cấp nhật ký riêng cho từng gói. Nhưng làm cách nào để xác định các tệp nhật ký riêng biệt? – Ralph