2010-11-23 48 views
13

Ứng dụng java của tôi tham chiếu đến tệp jar của bên thứ ba sử dụng nhật ký log4j. Vấn đề là lọ này chứa tệp log4j.properties của riêng nó, nguyên nhân truy cập các ngoại lệ bị từ chối trên máy tính của tôi, nhưng tôi không có quyền kiểm soát tệp jar để thay đổi nội dung của nó.Ghi đè log4j.properties

Tôi đã thử thêm tệp log4j.properties của riêng mình vào đường dẫn lớp của ứng dụng, nhưng dường như nó không có hiệu lực. Nếu tôi cố gắng sử dụng PropertyConfigurator để nhập các thiết lập của riêng tôi theo lập trình, log4j có vẻ như nạp tập tin thuộc tính của tệp jar đầu tiên (gây ra một ngoại lệ).

Làm cách nào để tôi có thể tắt log4j để bỏ qua tệp log4j.properties của tệp jar của bên thứ ba và sử dụng tệp của riêng tôi?

Trả lời

15

Có một số cách để ghi đè log4j.properties, một trong số họ là:

  • Sử dụng log4j.xml xin vui lòng xem phần mở rộng

Một cách khác là:

  • Đặt log4j.defaultInitOverride thuộc tính hệ thống cho bất kỳ giá trị nào khác thì "false" sẽ khiến log4j bỏ qua thủ tục khởi tạo mặc định (thủ tục này).
  • Đặt biến chuỗi tài nguyên thành giá trị của thuộc tính hệ thống log4j.configuration. Cách ưu tiên để chỉ định tệp khởi tạo mặc định là thông qua thuộc tính hệ thống log4j.configuration. Trong trường hợp thuộc tính hệ thống log4j.configuration không được định nghĩa, thì hãy đặt tài nguyên biến chuỗi thành giá trị mặc định của nó là "log4j.properties".
  • Cố gắng chuyển đổi biến tài nguyên thành URL.
  • Nếu biến tài nguyên không thể chuyển đổi thành URL, ví dụ: do MalformedURLException, sau đó tìm kiếm tài nguyên từ classpath bằng cách gọi org.apache.log4j.helpers.Loader.getResource (tài nguyên, Logger.class) trả về một URL. Lưu ý rằng chuỗi "log4j.properties" cấu thành URL không đúng định dạng. Xem Loader.getResource (java.lang.String) để biết danh sách các vị trí được tìm kiếm.
  • Nếu không tìm thấy URL, hãy hủy khởi tạo mặc định. Nếu không, hãy cấu hình log4j từ URL. PropertyConfigurator sẽ được sử dụng để phân tích cú pháp URL để cấu hình log4j trừ khi URL kết thúc bằng phần mở rộng ".xml", trong trường hợp đó DOMConfigurator sẽ được sử dụng. Bạn có thể tùy ý chỉ định một trình cấu hình tùy chỉnh. Giá trị của thuộc tính hệ thống log4j.configuratorClass được lấy làm tên lớp đầy đủ của trình cấu hình tùy chỉnh của bạn. Trình cấu hình tùy chỉnh mà bạn chỉ định phải triển khai giao diện Trình cấu hình.

Ref: http://logging.apache.org/log4j/1.2/manual.html

+0

Các URL chuyển đến cuối của phiên bản sống của Log4j. Tương đương gần nhất là: https://logging.apache.org/log4j/2.x/manual/configuration.html#SystemProperties –