2014-09-23 20 views
13

Tôi có một ứng dụng mới đang được viết bằng log4j2, để tận dụng một số tính năng mới của nó. Một trong những thư viện mà nó sử dụng là cũ hơn một chút và được xây dựng với log4j 1.x. Tôi đang gặp sự cố trong đó mã mới trong ứng dụng ghi vào nhật ký, nhưng mã trong thư viện cũ không ghi vào nhật ký. Tôi thậm chí có một lớp mà là một phân lớp của một cái gì đó trong thư viện cũ và cũng được gọi bằng mã trong thư viện cũ, và mã này cũng sẽ không ghi vào nhật ký. Tôi đã cấu hình ứng dụng để sử dụng log4j2 phiên bản 2.0.2 và tôi đã loại trừ một cách rõ ràng log4j khi tham chiếu đến thư viện cũ dưới dạng phụ thuộc của maven.Trộn log4j 1.x và log4j 2

Làm cách nào để lấy mã trong thư viện cũ đăng nhập vào cùng một tệp với mã mới của tôi?

Re-viết thư viện cũ cần được coi là một lựa chọn cuối cùng khu nghỉ mát

Trả lời

24

Bạn có biết rằng log4j2 bao gồm một cầu nối cho log4j-1.2? Bạn có thể sử dụng nó bằng cách loại bỏ cái cũ log4j-1.2.17.jar, và bao gồm ba lọ:

  • log4j-api-2.x.jar
  • log4j-core-2.x.jar
  • log4j-1,2-api-2.x.jar

này sẽ cho kết quả trong tất cả các cuộc gọi mà ứng dụng của bạn làm cho API log4-1.2 để được chuyển đến thi log4j2. Câu hỏi thường gặp có một số diagram có thể làm rõ mọi thứ. (Đừng quên tháo bình log4j-1.2 cũ khỏi đường dẫn!)

+1

Có vẻ như tôi cũng bị thiếu 'log4j-jcl', nhưng giờ tôi đã đăng nhập, cảm ơn! – FrustratedWithFormsDesigner

+0

Tính năng này có hoạt động khi bạn có các ứng dụng tùy chỉnh không? –

+0

Tùy chỉnh Log4j2 appenders: có. Tùy chỉnh log4j 1.2 appenders: không. Đây là một bộ điều hợp API, việc thực hiện đã thay đổi. Bạn sẽ cần phải chuyển các tiện ích mở rộng tùy chỉnh sang Log4j2. –