[slf4j-user] Got a spring error when delegate log4j&Jul to slf4j then to log4j.
Jason Wang
jason.wang at bulletin.net
Mon Jun 29 04:00:49 CEST 2009
Jason Wang wrote:
> Hi all,
>
> I am brand new to this wonderful slf4j tool(started to read about it 2
> hours ago) and from my understanding switching to it should be a pain
> free process. However I ran into some problems.
>
> My project mainly uses log4j directly and it now depends on a 3rd
> party library which uses JUL as its logging framework. I would like
> to make sure all the logs the 3rd party lib produces under the control
> of my log4j settings. After a quick search on Google, the best
> approach seems to be use the slf4j lib to bridge JUL to it and then
> tell slf4j to use log4j as its backing implementation.
>
> So my solution idea is:
> 1.Delegating all of my log4j logging request to slf4j (by using log4j
> over slf4j and removing the log4j jar)
> 2. Make sure JUL log requests go to slf4j by using jul-to-slf4j.
>
> 3. Make sure slf4j uses log4j's implementation by using lf4j-log4j12.
> So hopefully I get:
> A: my log4j.xml settings still work.
> B: the 3rd party lib's JUL logging requests end up going to log4j in
> the end.
>
> My steps are:
>
> 1. comment out the dependency on log4j in my pom.xml, so the log4j.jar
> will no longer be in my webapp/lib
>
> 2. introduce the following 3 dependencies.
> <dependency>
> <groupId>org.slf4j</groupId>
> <artifactId>log4j-over-slf4j</artifactId>
> <version>1.5.8</version>
> </dependency>
> <dependency>
> <groupId>org.slf4j</groupId>
> <artifactId>slf4j-log4j12</artifactId>
> <version>1.5.8</version>
> <scope>test</scope>
> </dependency>
> <dependency>
> <groupId>org.slf4j</groupId>
> <artifactId>jul-to-slf4j</artifactId>
> <version>1.5.8</version>
> </dependency>
>
> After applying the changes, the project still builds, great. But it
> fails immediately on runtime:
>
> Spring complains that it could not initialize org.apache.log4j.logger.
> Detailed message:
>
> Nested in org.springframework.beans.factory.BeanCreationException:
> Error creating bean with name 'paypalRestService' defined in file
> [/home/jasonw/dev/bulletin-paymentengine/target/classes/com/bulletin/paymentengine/api/paypal/rest/resource/PaypalRestService.class]:
> Instantiation of bean failed; nested exception is
> java.lang.NoClassDefFoundError: Could not initialize class
> org.apache.log4j.Logger:
> java.lang.NoClassDefFoundError: Could not initialize class
> org.apache.log4j.Logger
> at
> com.bulletin.paymentengine.api.paypal.rest.resource.PaypalRestService.<clinit>(PaypalRestService.java:45)
>
>
>
> So, my questions are: will my solution work at all in theory? Is there
> anything wrong in my solution?
> How to fix this spring problem?
>
>
> Thanks alot.
>
> Jas
>
>
> _______________________________________________
> user mailing list
> user at slf4j.org
> http://www.slf4j.org/mailman/listinfo/user
Just realized that log4j-over-slf4j.jar can not live together with
slf4j-logj12.jar. .. So my approach will never work.
So folks, what will be the best approach to my question(delegate JUL to
log4j)?
I guess on way to do it is to change my code from log4j to slf4j-api so
I can still use jul-to-slf4j and slf4j-to-log4j. But that will not be
pain free at all, will it?
Thanks
Jason
More information about the slf4j-user
mailing list