Có cách nào để buộc slf4j sử dụng nhà cung cấp đăng nhập cụ thể (đăng nhập trong trường hợp của tôi) không? Như trong tài liệu của họ:Buộc slf4j sử dụng logback
Nhiều ràng buộc đã được tìm thấy trên con đường lớp
SLF4J API được ngủ được thiết kế để ràng buộc với một và chỉ một khung đăng nhập cơ bản cùng một lúc. Nếu có nhiều hơn một ràng buộc có mặt trên đường dẫn lớp, SLF4J sẽ phát ra một cảnh báo, liệt kê vị trí của các ràng buộc đó. Khi nhiều kết buộc có sẵn trên đường dẫn lớp, hãy chọn một và chỉ một liên kết bạn muốn sử dụng và xóa các ràng buộc khác. Ví dụ, nếu bạn có cả slf4j-> simple-1.6.6.jar và slf4j-nop-1.6.6.jar trên đường dẫn lớp và bạn muốn sử dụng ràng buộc nop (> no-operation), sau đó loại bỏ slf4j- simple-1.6.6.jar từ đường dẫn lớp. Nếu không thể loại bỏ các ràng buộc thừa, SLF4J sẽ vẫn liên kết với một khung công tác/triển khai ghi nhật ký. Kể từ phiên bản 1.6.6, SLF4J sẽ đặt tên cho khung công tác/khung thực thi mà nó thực sự bị ràng buộc.
LƯU Ý Cảnh báo phát ra bởi SLF4J chỉ là vậy, một cảnh báo.
Trong trường hợp của tôi, tôi có log4j.jar
, slf4j-log4j12.jar
, log4j-over-slf4j.jar
và tất cả các lọ logback trong classpath. Tôi biết rằng đó là lỗi có slf4j-log4j12.jar
và log4j-over-slf4j.jar
cùng nhau, nhưng dự án của tôi là rất lớn và không phải lúc nào cũng đơn giản để tìm và loại trừ sự phụ thuộc của maven. Trong trường hợp này slf4j thậm chí không in bất kỳ cảnh báo nào, bởi vì chúng tôi chỉ sử dụng cấu hình logback. Phải mất một ngày tôi mới hiểu được cái địa ngục này.
Tất cả những gì tôi muốn là buộc slf4j sử dụng logback thông qua đối số JVM, ví dụ, để nó có thể in cảnh báo và tôi có thể loại trừ các lọ trong tương lai.
Đó là một điều đáng tiếc cho tôi – madhead