Tôi đang cố gắng sử dụng SLF4J (với log4j
ràng buộc) lần đầu tiên.Đặt cấu hình Log4j Loggers Programmatically
Tôi muốn cấu hình 3 Loggers tên khác nhau mà có thể được trả về bởi một LoggerFactory đó sẽ đăng nhập cấp độ khác nhau và đẩy các thông điệp để appenders khác nhau:
- Logger 1 "FileLogger" nhật ký DEBUG và gắn thêm để
DailyRollingFileAppender
- Logger 2 "TracingLogger" nhật ký TRACE + và gắn thêm vào một Logger
JmsAppender
- 3 "ErrorLogger" nhật ký LỖI + và gắn thêm vào một khác nhau
JmsAppender
Hơn nữa, tôi muốn chúng được lập cấu hình theo lập trình (trong Java, trái ngược với XML hoặc một tệp log4j.properties
).
Tôi tưởng tượng rằng, thông thường, tôi sẽ xác định các Logger
s ở đâu đó trong một số mã khởi động, như phương thức init()
. Tuy nhiên, bởi vì tôi muốn sử dụng slf4j-log4j
, tôi đang bối rối về nơi tôi có thể xác định logger và làm cho chúng có sẵn cho classpath.
Tôi không tin điều này là vi phạm mục đích cơ bản của SLF4J (như mặt tiền), vì mã của tôi sử dụng API SLF4J sẽ không bao giờ biết rằng những trình ghi nhật ký 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 đến Loggerj Logger 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 Logger Log4j đó trên đường dẫn lớp ... trong Java ?!
http://stackoverflow.com/questions/1666121/programmatically-creating-different -log-files-using-log4j – skaffman
Đối với log4j 1.x, hãy sử dụng câu trả lời được chấp nhận bên dưới cho 2.x xem https://logging.apache.org/log4j/2.x/manual/customconfig.html – earcam