2009-04-01 14 views
5

Khi triển khai ứng dụng web OSGi của tôi bằng cách sử dụng equinox servlet bridge tôi nhận được như sau:Làm thế nào để cấu hình Log4J khi triển khai một ứng dụng OSGi với Equinox Servle Bridge tới Tomcat?

log4j:WARN No appenders could be found for logger (org.springframework.osgi.extender.internal.activator.ContextLoaderListener). 
log4j:WARN Please initialize the log4j system properly. 

Tôi đã thử nhiều cách để cung cấp các "log4j.properties" cần thiết tập tin, bao gồm:

  • thêm context- param "log4jConfigLocation" vào weblet servlet web.xml
  • tạo thư mục "các lớp" trong thư mục WEB-INF và sao chép tệp log4j.properties tại đó (và sao chép nó ở một số vị trí khác)
  • xóa gói log4j của tôi và đặt "extendedFrameworkExports" thành org.apache.log4j vì vậy (tôi đoán) logcatj tomcat được sử dụng ... điều này không hoạt động vì phụ thuộc của tôi cần một số lớp slf4j được cung cấp dưới dạng đoạn cho gói log4j ... không còn ở đó nữa ...

Tất nhiên tôi cũng có một gói đoạn mở rộng gói log4j với tệp log4j.properties, nhưng có vẻ như gói log4j này không được sử dụng.

ADDED: Tôi nên thêm rằng tôi đang phát triển ứng dụng trong Eclipse ... và gói phân đoạn của tôi có cấu hình log4j/slf4j hoạt động ở đó.

Có ai đã giải quyết vấn đề này không? Bất kỳ ý tưởng?

Trả lời

3

Tôi đã tìm thấy lỗi của mình. Phân đoạn cần cung cấp tệp log4j.properties không bao gồm nó, vì tôi đã không thêm nó vào bản dựng nhị phân trong tệp build.properties.

2

CẬP NHẬT: Điều này không thực sự hữu ích với sự cố của bạn ...

Tôi chỉ đang nghiên cứu OSGi.

Không hoàn toàn những gì bạn đang tìm kiếm, nhưng sau post thảo luận về cùng một vấn đề khi sử dụng vanilla equinox (ví dụ: không được lưu trữ trong tomcat/cầu cảng).

Điều này gợi ý nên tạo một "bó phân đoạn" (ví dụ có sẵn để tải xuống) để giữ log4j.properties của bạn. Có lẽ bạn có thể thử một cái gì đó tương tự?

Hoặc có lẽ bạn chỉ cần đặt log4j.properties bên trong META-INF trong WAR của bạn?

+0

1. cách tiếp cận bó mảnh bạn thường thực hiện dường như không hoạt động khi bạn triển khai ứng dụng của bạn với tomcat dưới dạng .war. 2. Chiến tranh của tôi chưa có thư mục META-INF, nhưng tôi đã thử và nó cũng không hoạt động (tôi đã thử tất cả các thư mục hiện có như WEB-INF, WEB-INF/eclipse, ...) – arturh

+0

Xin lỗi, tôi không thể trợ giúp thêm .. – toolkit

3

Cảm ơn arturh. Tôi gặp vấn đề tương tự. Tôi đã thêm log4j.properties vào thư mục/src của mình.

+1

Theo dõi điều này, tôi đã gặp vấn đề tiếp theo, trong khi các gói ứng dụng của tôi đăng nhập thành công qua đoạn cấu hình log4j thành công, các gói khác thì không. Giải pháp là để đảm bảo rằng các gói đó có org.apache.log4j trong thuộc tính "Import-Package:" của chúng, mặc dù chúng không cần nhập khẩu để biên dịch một cách rõ ràng. Sau đó, họ tìm thấy tệp log4j.properties của tôi thông qua đoạn, được lưu trữ bởi gói log4j. – nevh

+0

Cảm ơn mẹo! Vui vì tôi có thể hỗ trợ. – arturh