2011-11-15 23 views
6

Tôi đang sử dụng Log4j trong ứng dụng của mình và có một số ứng dụng để gỡ lỗi và lỗi. Tôi đã thử nghiệm này trên tomcat và làm việc tốt. Tạo tất cả nhật ký trong các tệp tương ứng của chúng. Nhưng khi tôi triển khai mã trên WAS6.1, tất cả các bản ghi chỉ được tạo ra bên trong SystemOut.log.Websphere tất cả các bản ghi sẽ SystemOut.log

Vui lòng trợ giúp!

+0

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. –

+0

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

+0

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

Trả lời

8

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 referencesblog 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.

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