2012-05-21 26 views
10

Tôi có commons-logging.jar (v1.0.4) và log4j-1.2.8.jar trong classpath và nhận được lỗi sau thời gian chạy:Có thể không tìm thấy nguyên nhân gốc rễ của Log4JLogger hoặc không thể sử dụng được?

Caused by: org.apache.commons.logging.LogConfigurationException: User-specified log class 'org.apache.commons.logging.impl.Log4JLogger' cannot be found or is not useable. 
    at org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(LogFactoryImpl.java:874) 
    at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:604) 
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:336) 
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:310) 
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685) 
+0

bạn có thể cung cấp toàn bộ dấu vết ngăn xếp không? – Dmitry

+6

Đây có thể là sự cố classpath. Bạn có thể có một phiên bản khác của log4j trong classpath của bạn, có thể ẩn bên trong một cái gì đó khác. –

+0

tôi đã tìm thấy một cái lọ có phiên bản khác của log4j, tuy nhiên đó có thể không phải là cái cuối cùng, vẫn đang tìm kiếm ... –

Trả lời

4

Đây là một vấn đề classpath và chúng tôi đã có một phiên bản khác của log4j trong classpath. Cảm ơn Nathan Ryan!

1

Nếu bạn đang cung cấp một thực hiện cho một logger, việc thực hiện phải định nghĩa một hàm tạo có một đối số java.lang.String. Nếu không, bạn sẽ nhận được "org.apache.commons.logging.LogConfigurationException: Lớp nhật ký do người dùng chỉ định '...' không thể tìm thấy hoặc không thể sử dụng được". Trang faq của trạng thái wiki apache như vậy.

Bạn có tạo bất kỳ dự án cụ thể nào như dịch vụ web hoặc mùa xuân, v.v. không? Nếu có, thì hãy phân tích các tập tin tài sản cụ thể dự án đó sẽ có một tài sản trong tham chiếu đến Logger, một cái gì đó giống như

<property name="logger">javax.servlet,org.apache.commons.logging</property>

nếu bạn có một dự án java với servlets.

+0

chúng tôi không thực hiện Logger để loại bỏ vấn đề đó. một ứng dụng lõi-java của nó chạy trong jvm riêng của nó –

+0

ok. Vui lòng cung cấp thêm thông tin về sự cố của bạn theo dõi ngăn xếp, mã hoạt động tối thiểu, v.v. – mtk

1

Tôi đã nhận được cùng ngoại lệ này.

Tôi có triển khai trình ghi nhật ký.

Nó không có hàm tạo để nhận String làm đối số.

Tôi đã triển khai một hàm tạo như vậy và giải quyết được vấn đề cho tôi.

1

Tôi thấy lỗi này đôi khi khi tôi cố chạy ứng dụng web trên tomcat 7 trong nhật thực 3.6. Nó xảy ra từ hư không chỉ bằng cách khởi động lại nhật thực.

Sau một vài (!) "Dọn dẹp tất cả các dự án" và triển khai mới ứng dụng web trên máy chủ, ứng dụng sẽ chạy lại. Có lẽ ai đó khác biết chính xác "phép thuật" để giải quyết bí ẩn này mà không cần dùng thử và lỗi?

1

Tôi đã nhận được lỗi này khi apache commons đăng nhập jar đã có trong classpath của tôi nhưng log4j jar là bằng cách nào đó mất tích. Một khi tôi thêm jar log4j vào đường dẫn lớp của tôi, lỗi này đã biến mất.

11

Nếu bạn sử dụng Maven, bạn phải đảm bảo khai commons-logging và log4j trong pom.xml

<dependencies> 
    <dependency> 
     <groupId>commons-logging</groupId> 
     <artifactId>commons-logging</artifactId> 
     <version>1.1.3</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 
</dependencies> 

nếu bạn khai báo chỉ commons-đăng nhập bạn nhận được lỗi Log4JLogger cannot be found or is not useable

3

có vấn đề này sử dụng log4j -2.x với commons-logging-1.2. Hoàn nguyên trở lại log4j 1.2.x và tất cả đều ổn với thế giới.

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