ooyala / metrics_storm

Easy metrics collection for Storm topologies using Coda Hale Metrics
Other
100 stars 31 forks source link

Multiple SLF4J bindings when deploying metrics_storm using storm 0.9.0 #5

Open ArupMukherjee opened 10 years ago

ArupMukherjee commented 10 years ago

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 commented 10 years ago

Hi Arup,

Do you mind posting your error?

On Wed, Jan 15, 2014 at 8:01 AM, ArupMukherjee notifications@github.comwrote:

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/ooyala/metrics_storm/issues/5 .

Evan Chan Staff Engineer ev@ooyala.com |

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

ArupMukherjee commented 10 years ago

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 commented 10 years ago

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 notifications@github.comwrote:

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/ooyala/metrics_storm/issues/5#issuecomment-32388206 .

Evan Chan Staff Engineer ev@ooyala.com |

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

ArupMukherjee commented 10 years ago

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 commented 10 years ago

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 notifications@github.comwrote:

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/ooyala/metrics_storm/issues/5#issuecomment-32406916 .

Evan Chan Staff Engineer ev@ooyala.com |

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