2009-01-16 31 views
6

Nơi tôi làm việc, chúng tôi sử dụng Log4j để ghi nhật ký ứng dụng web. Log4j.jar ở cấp ứng dụng chứ không phải cấp vùng chứa. Chúng tôi đang sử dụng một appender file hàng ngày. Các tệp log4j.properties của chúng tôi định nghĩa các appender dựa trên tên gói ứng dụng, vì vậy chỉ các lớp trong gói ứng dụng của chúng tôi và bên dưới được ghi vào tệp nhật ký của ứng dụng của chúng tôi.Các chiến lược để ghi nhật ký ứng dụng từ mã thư viện?

Trong đơn đăng ký của mình, tôi đang mở rộng khuôn khổ của mình với một số lớp hỗ trợ. Các lớp này không nằm trong gói của ứng dụng, vì chúng không dành riêng cho ứng dụng của tôi và cuối cùng sẽ được đưa vào thư viện jar để sử dụng với các ứng dụng khác. Bởi vì điều này, các báo cáo khai thác gỗ của tôi không được trình ứng dụng của tôi chọn, và do đó không đăng nhập vào các tệp nhật ký của ứng dụng của tôi.

Tôi muốn cho phép các lớp trong jar của tôi đăng nhập vào tệp nhật ký của ứng dụng bằng các lớp. Tuy nhiên, nếu tôi tạo appender trong file thuộc tính log4j của ứng dụng dựa trên tên lớp của mình, tôi nghi ngờ rằng khi nhiều ứng dụng đang sử dụng jar của tôi, vì tên lớp giống nhau trong các tệp log4j.properties, chỉ có một tệp nhật ký ứng dụng sẽ nhận được báo cáo khai thác của jar và rằng nó sẽ nhận được tất cả các câu lệnh khai thác gỗ từ ứng dụng MỌI bằng cách sử dụng jar đó. Tôi nghĩ rằng đây là trường hợp, vì chúng tôi đang sử dụng một cuộc gọi Logger.getLogger() tĩnh để lấy logger.

Trước tiên, tôi muốn biết nếu nỗi sợ của mình hợp lệ, nếu điều này thực sự xảy ra khi nhiều ứng dụng web trong cùng một hoặc các vùng chứa khác nhau đang sử dụng bình của tôi cùng một lúc.

Tôi cũng muốn biết liệu có "ranh giới" mà hành vi này thay đổi hay không. Ví dụ, vấn đề này tồn tại không phụ thuộc vào việc log4j.jar là một bình chứa mức chứa hay một lọ cấp ứng dụng, hoặc nếu mỗi thùng chứa đang chạy trong một JVM riêng biệt?

Cuối cùng, nếu trường hợp này xảy ra, tôi muốn biết tôi nên sử dụng chiến lược nào để khắc phục sự cố.

Cảm ơn trước!

+0

bạn đã làm gì? –

Trả lời

2

Nếu log4j.jar chỉ trong ứng dụng web thì nhật ký sẽ tách biệt để mỗi ứng dụng web phải có log4j.jar và log4j.properties riêng để tất cả các nhật ký riêng biệt.

+0

Ngay cả khi cả hai tệp log4j.properties đều định nghĩa các trình ứng dụng giống nhau cho các lớp được sử dụng trong thư viện jar của tôi? –

0

Vấn đề là mẫu preffered cho log4j là sử dụng các phương pháp cấu hình tĩnh *, không hoạt động tốt với các thùng chứa ứng dụng.

Điều này article giải quyết vấn đề này cho tôi khi tôi gặp phải ...

Các vấn đề liên quan