Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder"

My application is to be deployed on both tcServer and WebSphere 6.1. This application uses ehCache and so requires slf4j as a dependency. As a result I've added the slf4j-api.jar (1.6) jar to my war file bundle.

The application works fine in tcServer except for the following error:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 

However, when I deploy in WebSphere I get a java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder.

Also accompanied by Failed to load class "org.slf4j.impl.StaticMDCBinder"

I've checked the classpaths of both application servers and there is no other slf4j jar.

Does anyone have any ideas what may be happening here?

like image 205
DJ180 Avatar asked Sep 14 '11 19:09

DJ180


People also ask

What is SLF4J error?

impl. StaticLoggerBinder". This is a warning which is caused when there are no SLF4J bindings provided in the classpath.

What is SLF4J jdk14?

slf4j is Simple Logging Facade for Java .

What is SLF4J API jar?

API for SLF4J (The Simple Logging Facade for Java) which serves as a simple facade or abstraction for various logging frameworks, allowing the end user to plug in the desired logging framework at deployment time.


2 Answers

I had the same issue with WebSphere 6.1. As Ceki pointed out, there were tons of jars that WebSphere was using and one of them was pointing to an older version of slf4j.

The No-Op fallback happens only with slf4j -1.6+ so anything older than that will throw an exception and halts your deployment.

There is a documentation in SLf4J site which resolves this. I followed that and added slf4j-simple-1.6.1.jar to my application along with slf4j-api-1.6.1.jar which I already had.

If you use Maven, add the following dependencies, with ${slf4j.version} being the latest version of slf4j

<dependency>     <groupId>org.slf4j</groupId>     <artifactId>slf4j-api</artifactId>     <version>${slf4j.version}</version> </dependency> <dependency>     <groupId>org.slf4j</groupId>     <artifactId>slf4j-simple</artifactId>     <version>${slf4j.version}</version> </dependency> 

This solved my issue.

like image 62
Prasanna Avatar answered Oct 19 '22 22:10

Prasanna


This is for those who came here from google search.

If you use maven just add the following

   <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-api</artifactId>        <version>1.7.5</version>    </dependency>    <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-log4j12</artifactId>        <version>1.7.5</version>    </dependency> 

Or

   <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-api</artifactId>        <version>1.7.5</version>    </dependency>    <dependency>        <groupId>org.slf4j</groupId>        <artifactId>slf4j-simple</artifactId>        <version>1.6.4</version>    </dependency> 
like image 23
Igor Katkov Avatar answered Oct 19 '22 22:10

Igor Katkov