[slf4j-user] Got a spring error when delegate log4j&Jul to slf4j then to log4j.

Maarten Bosteels mbosteels.dns at gmail.com
Mon Jun 29 09:34:33 CEST 2009


Hi Jason,

I think you should

* Make sure  JUL log requests go to slf4j by using jul-to-slf4j.
* Make sure slf4j uses log4j's implementation by using slf4j-log4j12.
* Keep log4j.jar on your classpath

All code that directly uses log4j can keep doing that.

regards,

Maarten



On Mon, Jun 29, 2009 at 4:00 AM, Jason Wang <jason.wang at bulletin.net> wrote:

> 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
>
> _______________________________________________
> user mailing list
> user at slf4j.org
> http://www.slf4j.org/mailman/listinfo/user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://qos.ch/pipermail/slf4j-user/attachments/20090629/0e834bf7/attachment.htm>


More information about the slf4j-user mailing list