Tôi đang cố gắng sử dụng SLF4J (có log4j
ràng buộc) lần đầu tiên.
Tôi muốn cấu hình 3 Logger có tên khác nhau có thể được trả về bởi LoggerFactory, nó sẽ ghi lại các cấp độ khác nhau và đẩy các thông báo đến các appender khác nhau:
- Logger 1 "FileLogger" ghi nhật ký DEBUG và nối vào
DailyRollingFileAppender
- Logger 2 "TraceLogger" ghi nhật ký TRACE + và nối thêm vào
JmsAppender
- Logger 3 "ErrorLogger" ghi nhật ký ERROR + và nối thêm vào khác
JmsAppender
Hơn nữa, tôi muốn chúng được cấu hình theo chương trình (bằng Java, trái ngược với XML hoặc log4j.properties
tệp).
Tôi tưởng tượng rằng, thông thường, tôi sẽ định nghĩa những cái này Logger
ở đâu đó trong một số mã bootstrapping, giống như một init()
phương thức. Tuy nhiên, vì tôi muốn sử dụng slf4j-log4j
, tôi bối rối về nơi tôi có thể định nghĩa logger và làm cho chúng có sẵn cho đường dẫn lớp.
Tôi không tin rằng điều này vi phạm mục đích cơ bản của SLF4J (như một mặt tiền), bởi vì mã của tôi sử dụng API SLF4J sẽ không bao giờ biết rằng các logger này tồn tại. Mã của tôi chỉ thực hiện các cuộc gọi bình thường tới API SLF4J, sau đó chuyển tiếp chúng tới log4j Loggers mà nó tìm thấy trên đường dẫn lớp.
Nhưng làm cách nào để định cấu hình các logger log4j trên đường dẫn lớp ... trong Java?!