Vấn đề có thể là WebSphere 6.1 sử dụng Jakarta Commons Logging (JCL) nội bộ và nếu bất kỳ mã hoặc thư viện bên thứ ba nào của bạn cũng sử dụng JCL, cấu hình của WebSphere xung đột với ứng dụng của bạn đang cố gắng sử dụng log4j. Nếu điều này xảy ra, bạn sẽ thấy chính xác những gì bạn đang thấy.
Có nhiều references và blog posts mô tả cách giải quyết vấn đề này. Chúng tôi đã tìm thấy cách đơn giản nhất để tạo tệp có tên là org.apache.commons.logging.LogFactory
trong thư mục META-INF/services
của ứng dụng web của bạn (trong thư mục gốc của tệp lưu trữ WAR). Tệp này phải chứa dòng:
org.apache.commons.logging.impl.Log4jFactory
(Ít nhất với phiên bản mới hơn của WebSphere ...) Một khóa khác là bình JCL phải được tải từ cùng một vị trí như bình log4j. ví dụ. hoặc cả hai từ WEB-INF/lib hoặc cả hai từ một thư viện được chia sẻ. Vì vậy, bạn không thể quay trở lại khi tải JCL từ bản sao do WebSphere cung cấp. Nếu chúng được tải bởi different classloaders, chúng không thể nhìn thấy nhau một cách chính xác.
Sẽ tốt nếu bạn đính kèm một số mã. Tôi đang sử dụng websphere và nhận tất cả nhật ký của mình trong tệp nhật ký riêng biệt. –
Bạn có đang sử dụng bất kỳ mặt tiền ghi nhật ký nào như ghi nhật ký không? Nếu vậy, bạn nên thay đổi thứ tự nạp lớp thành phụ huynh cuối cùng. – szhem
Bạn không cần phải làm cha mẹ-cuối cùng, và vì nó có tác dụng khác, tôi muốn tránh nó nếu có thể. – dbreaux