Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multiple SLF4J bindings when deploying metrics_storm using storm 0.9.0 #5

Open
ArupMukherjee opened this issue Jan 15, 2014 · 5 comments

Comments

@ArupMukherjee
Copy link

Hi,

I am new to Scala and SBT and used sbt-assembly plugin along with sbt to deploy metrics_storm and adding the .jar file generated to the class path of storm. However, now when I start storm using ./storm nimbus I get a classpath contains multiple SLF4J bindings error.
My question is: Is there some variant of storm that I need to be using to get around the multiple bindings error? Also, if the variant of storm is not an issue, could you give me some hints as to get around the multiple slf4j issue.

Thanks in advance..

Arup

@velvia
Copy link
Contributor

velvia commented Jan 15, 2014

Hi Arup,

Do you mind posting your error?

On Wed, Jan 15, 2014 at 8:01 AM, ArupMukherjee [email protected]:

Hi,

I am new to Scala and SBT and used sbt-assembly plugin along with sbt to
deploy metrics_storm and adding the .jar file generated to the class path
of storm. However, now when I start storm using ./storm nimbus I get a
classpath contains multiple SLF4J bindings error.
My question is: Is there some variant of storm that I need to be using to
get around the multiple bindings error? Also, if the variant of storm is
not an issue, could you give me some hints as to get around the multiple
slf4j issue.

Thanks in advance..

Arup


Reply to this email directly or view it on GitHubhttps://github.com//issues/5
.

Evan Chan
Staff Engineer
[email protected] |

http://www.ooyala.com/
http://www.facebook.com/ooyalahttp://www.linkedin.com/company/ooyalahttp://www.twitter.com/ooyala

@ArupMukherjee
Copy link
Author

Hello Evan,

I switched to version 0.8.2 of Storm to be compatible with metrics_storm. I used sbt_assembly to build the jar file which I added to the classpath of storm. I added the metrics_storm-assembly-0.0.7-SNAPSHOT.jar file to the classpath. The build.sbt file has the library dependencies as folows: libraryDependencies ++= Seq(
"org.slf4j" % "slf4j-api" % "1.5.8",
"org.slf4j" % "slf4j-log4j12" % "1.5.8",
"com.yammer.metrics" % "metrics-core" % "2.1.2",
"com.yammer.metrics" % "metrics-servlet" % "2.1.2",
"javax.servlet" % "servlet-api" % "2.5"
)

The error I am getting is as follows:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/arup/storm-0.8.2/lib/slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/arup/storm-0.8.2/lib/metrics_storm-assembly-0.0.7-SNAPSHOT.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: The requested version 1.5.8 by your slf4j binding is not compatible with [1.6]

Thanks,
Arup

@velvia
Copy link
Contributor

velvia commented Jan 15, 2014

Arup, try upgrading to slf4j 1.6.4. It sounds like the primary problem is
incompatible SLF4J versions.

On Wed, Jan 15, 2014 at 9:29 AM, ArupMukherjee [email protected]:

Hello Evan,

I switched to version 0.8.2 of Storm to be compatible with metrics_storm.
I used sbt_assembly to build the jar file which I added to the classpath of
storm. I added the metrics_storm-assembly-0.0.7-SNAPSHOT.jar file to the
classpath. The build.sbt file has the library dependencies as folows:
libraryDependencies ++= Seq(
"org.slf4j" % "slf4j-api" % "1.5.8",
"org.slf4j" % "slf4j-log4j12" % "1.5.8",
"com.yammer.metrics" % "metrics-core" % "2.1.2",
"com.yammer.metrics" % "metrics-servlet" % "2.1.2",
"javax.servlet" % "servlet-api" % "2.5"
)

The error I am getting is as follows:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in
[jar:file:/home/arup/storm-0.8.2/lib/slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in
[jar:file:/home/arup/storm-0.8.2/lib/metrics_storm-assembly-0.0.7-SNAPSHOT.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
explanation.
SLF4J: The requested version 1.5.8 by your slf4j binding is not compatible
with [1.6]

Thanks,
Arup


Reply to this email directly or view it on GitHubhttps://github.com//issues/5#issuecomment-32388206
.

Evan Chan
Staff Engineer
[email protected] |

http://www.ooyala.com/
http://www.facebook.com/ooyalahttp://www.linkedin.com/company/ooyalahttp://www.twitter.com/ooyala

@ArupMukherjee
Copy link
Author

Evan,

I still get the same error

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/arup/storm-0.8.2/lib/slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/arup/storm-0.8.2/lib/metrics_storm-assembly-0.0.7-SNAPSHOT.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: The requested version 1.5.8 by your slf4j binding is not compatible with [1.6]

My sbt file looks as follows:

libraryDependencies ++= Seq(
"org.slf4j" % "slf4j-api" % "1.6.4",
"org.slf4j" % "slf4j-log4j12" % "1.6.4",
"com.yammer.metrics" % "metrics-core" % "2.1.2",
"com.yammer.metrics" % "metrics-servlet" % "2.1.2",
"javax.servlet" % "servlet-api" % "2.5"
)

My library structure for storm 0.8.2 looks as follows:

├── asm-4.0.jar
├── carbonite-1.5.0.jar
├── clj-time-0.4.1.jar
├── clojure-1.4.0.jar
├── clout-1.0.1.jar
├── commons-codec-1.4.jar
├── commons-exec-1.1.jar
├── commons-fileupload-1.2.1.jar
├── commons-io-1.4.jar
├── commons-lang-2.5.jar
├── commons-logging-1.1.1.jar
├── compojure-1.1.3.jar
├── core.incubator-0.1.0.jar
├── curator-client-1.0.1.jar
├── curator-framework-1.0.1.jar
├── disruptor-2.10.1.jar
├── guava-13.0.jar
├── hiccup-0.3.6.jar
├── httpclient-4.1.1.jar
├── httpcore-4.1.jar
├── jetty-6.1.26.jar
├── jetty-util-6.1.26.jar
├── jgrapht-0.8.3.jar
├── jline-0.9.94.jar
├── joda-time-2.0.jar
├── json-simple-1.1.jar
├── junit-3.8.1.jar
├── jzmq-2.1.0.jar
├── kryo-2.17.jar
├── libthrift7-0.7.0.jar
├── log4j-1.2.16.jar
├── math.numeric-tower-0.0.1.jar
├── metrics_storm-assembly-0.0.7-SNAPSHOT.jar
├── minlog-1.2.jar
├── objenesis-1.2.jar
├── reflectasm-1.07-shaded.jar
├── ring-core-1.1.5.jar
├── ring-jetty-adapter-0.3.11.jar
├── ring-servlet-0.3.11.jar
├── servlet-api-2.5-20081211.jar
├── servlet-api-2.5.jar
├── slf4j-api-1.5.8.jar
├── slf4j-log4j12-1.5.8.jar
├── snakeyaml-1.9.jar
├── tools.cli-0.2.2.jar
├── tools.logging-0.2.3.jar
├── tools.macro-0.1.0.jar
└── zookeeper-3.3.3.jar

@velvia
Copy link
Contributor

velvia commented Jan 15, 2014

Hm, I'm not quite sure, but somebody is including SLF4J 1.6.x in the
classpath. It seems like Storm 0.8.2 is still using 1.5.8, so the old code
should have been working.

I actually have been warnings like these and see that SLF4J logging still
works fine, but I believe it is still a version conflict issue.

On Wed, Jan 15, 2014 at 11:40 AM, ArupMukherjee [email protected]:

Evan,

I still get the same error

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in
[jar:file:/home/arup/storm-0.8.2/lib/slf4j-log4j12-1.5.8.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in
[jar:file:/home/arup/storm-0.8.2/lib/metrics_storm-assembly-0.0.7-SNAPSHOT.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an
explanation.
SLF4J: The requested version 1.5.8 by your slf4j binding is not compatible
with [1.6]

My sbt file looks as follows:

libraryDependencies ++= Seq(
"org.slf4j" % "slf4j-api" % "1.6.4",
"org.slf4j" % "slf4j-log4j12" % "1.6.4",

"com.yammer.metrics" % "metrics-core" % "2.1.2",
"com.yammer.metrics" % "metrics-servlet" % "2.1.2",
"javax.servlet" % "servlet-api" % "2.5"
)

My library structure for storm 0.8.2 looks as follows:

├── asm-4.0.jar
├── carbonite-1.5.0.jar
├── clj-time-0.4.1.jar
├── clojure-1.4.0.jar
├── clout-1.0.1.jar
├── commons-codec-1.4.jar
├── commons-exec-1.1.jar
├── commons-fileupload-1.2.1.jar
├── commons-io-1.4.jar
├── commons-lang-2.5.jar
├── commons-logging-1.1.1.jar
├── compojure-1.1.3.jar
├── core.incubator-0.1.0.jar
├── curator-client-1.0.1.jar
├── curator-framework-1.0.1.jar
├── disruptor-2.10.1.jar
├── guava-13.0.jar
├── hiccup-0.3.6.jar
├── httpclient-4.1.1.jar
├── httpcore-4.1.jar
├── jetty-6.1.26.jar
├── jetty-util-6.1.26.jar
├── jgrapht-0.8.3.jar
├── jline-0.9.94.jar
├── joda-time-2.0.jar
├── json-simple-1.1.jar
├── junit-3.8.1.jar
├── jzmq-2.1.0.jar
├── kryo-2.17.jar
├── libthrift7-0.7.0.jar
├── log4j-1.2.16.jar
├── math.numeric-tower-0.0.1.jar
├── metrics_storm-assembly-0.0.7-SNAPSHOT.jar
├── minlog-1.2.jar
├── objenesis-1.2.jar
├── reflectasm-1.07-shaded.jar
├── ring-core-1.1.5.jar
├── ring-jetty-adapter-0.3.11.jar
├── ring-servlet-0.3.11.jar
├── servlet-api-2.5-20081211.jar
├── servlet-api-2.5.jar
├── slf4j-api-1.5.8.jar
├── slf4j-log4j12-1.5.8.jar
├── snakeyaml-1.9.jar
├── tools.cli-0.2.2.jar
├── tools.logging-0.2.3.jar
├── tools.macro-0.1.0.jar
└── zookeeper-3.3.3.jar


Reply to this email directly or view it on GitHubhttps://github.com//issues/5#issuecomment-32406916
.

Evan Chan
Staff Engineer
[email protected] |

http://www.ooyala.com/
http://www.facebook.com/ooyalahttp://www.linkedin.com/company/ooyalahttp://www.twitter.com/ooyala

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants