Chúng tôi có một thư viện java cũ đơn giản được khởi tạo từ nhiều ứng dụng khác nhau. Trong trường hợp này, mỗi ứng dụng là một ứng dụng web mà tất cả đều sống trong cùng một thùng chứa tomcat.logger riêng biệt cho từng trường hợp của một thư viện
Mỗi ứng dụng đăng nhập vào tệp nhật ký của riêng mình, bằng cách sử dụng trình ghi nhật ký riêng của nó. Chúng tôi muốn các bản ghi được tạo ra bởi các thư viện, đó là thích hợp cho một ứng dụng cụ thể, cũng đi đến các ứng dụng đó tập tin đăng nhập riêng biệt.
Đối với điều này, một cách là để cho phép các ứng dụng để vượt qua trong logger của nó đến thư viện:
library = new library(Logger applicationsVeryOwnLogger);
Và sau đó sử dụng logger đó, để đăng nhập tất cả các báo cáo trong thư viện. Tuy nhiên, điều này có nghĩa rằng logger bây giờ là một biến lớp trong thư viện, và mọi lớp trong thư viện cần tham chiếu tới thư viện để sử dụng trình ghi nhật ký phù hợp.
Có cách nào tốt hơn để thực hiện việc này không?
Là một lưu ý phụ, giải pháp này cũng có thể được sử dụng để chia sẻ tất cả các loại tài nguyên, không chỉ logger. – Stefan
bạn có thể muốn dán các phần có liên quan của mã trong câu trả lời của bạn, trong trường hợp liên kết bị chết trong tương lai. – rouble
Một điều khác cần lưu ý về phương pháp này là ResourceManager.registerLogger() phải được gọi trước khi thư viện được khởi tạo. Nếu không, các logger lớp sẽ được thiết lập bằng cách sử dụng bộ ghi log mặc định. Điều này có thể là một bộ ngắt giao dịch cho một số triển khai. – rouble