
Hi, I need some help to integrate logback into my app. I use gradle to automate the building and this error occurs when running "gradlew runMod" task: [configuration ':archives', configuration ':compile', configuration
':default', configuration ':groovy', configuration ':provided', configuration ':runtime', configuration ':signatures', configuration ':testCompile',configuration ':testRuntime'] :cleanModsDir :clean BUILD SUCCESSFUL
Total time: 5.028 secs Download https://oss.sonatype.org/content/repositories/snapshots/io/vertx/vertx-core/... Download https://oss.sonatype.org/content/repositories/snapshots/io/vertx/vertx-platf... [configuration ':archives', configuration ':compile', configuration ':default', configuration ':groovy', configuration ':provided', configuration ':runtime', configuration ':signatures', configuration ':testCompile', configuration ':testRuntime'] Relying on packaging to define the extension of the main artifact has been deprecated and is scheduled to be removed in Gradle 2.0 Download https://oss.sonatype.org/content/repositories/snapshots/io/vertx/lang-groovy... :compileJava UP-TO-DATE :compileGroovy :processResources :classes :copyMod :runMod
println: before test.start
SLF4J: Class path contains multiple SLF4J bindings. *SLF4J: Found binding in [jar:file:/c:/Users/mihai/Desktop/test/mods/mod-owner~mod-name~1.0.0-SNAPSHOT/lib/logback-classic-1.0.9.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/C:/Users/mihai/.gradle/wrapper/dists/gradle-1.4-bin/47n6g3pbi5plc7n8fn58nkinje/gradle1.4/lib/logback-classic-1.0.9.jar!/org/slf4j/impl/StaticLoggerBinder.class] * SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. Failed to instantiate [ch.qos.logback.classic.LoggerContext] Reported exception: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script1.groovy: 1: unable to resolve class ch.qos.logback.classic.Level @ line 1, column 1. import ch.qos.logback.classic.Level ^ Script1.groovy: 5: unable to resolve class ch.qos.logback.core.rolling.TimeBasedRollingPolicy @ line 5, column 1. import ch.qos.logback.core.rolling.TimeBasedRollingPolicy ^
Script1.groovy: 4: unable to resolve class ch.qos.logback.core.rolling.RollingFileAppender @ line 4, column 1. import ch.qos.logback.core.rolling.RollingFileAppender ^ Script1.groovy: 3: unable to resolve class ch.qos.logback.core.ConsoleAppender @ line 3, column 1. import ch.qos.logback.core.ConsoleAppender ^ Script1.groovy: 6: unable to resolve class ch.qos.logback.core.status.OnConsoleStatusListener @ line 6, column 1. import ch.qos.logback.core.status.OnConsoleStatusListener ^
Script1.groovy: 2: unable to resolve class ch.qos.logback.classic.encoder.PatternLayoutEncoder @ line 2, column 1. import ch.qos.logback.classic.encoder.PatternLayoutEncoder ^ Script1.groovy: 8: unable to resolve class ch.qos.logback.classic.Level @ line 8, column 1. import static ch.qos.logback.classic.Level.INFO ^ Script1.groovy: 9: unable to resolve class ch.qos.logback.classic.Level @ line 9, column 1. import static ch.qos.logback.classic.Level.WARN ^ 8 errors
at
org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:309) at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:927) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:575) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:524) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:279) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:258) at groovy.lang.GroovyShell.parseClass(GroovyShell.java:613) at groovy.lang.GroovyShell.parse(GroovyShell.java:625) at groovy.lang.GroovyShell.parse(GroovyShell.java:652) at groovy.lang.GroovyShell.parse(GroovyShell.java:643) at groovy.lang.GroovyShell$parse.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at ch.qos.logback.classic.gaffer.GafferConfigurator.run(GafferConfigurator.groovy:48) at ch.qos.logback.classic.gaffer.GafferConfigurator$run.callCurrent(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141) at ch.qos.logback.classic.gaffer.GafferConfigurator.run(GafferConfigurator.groovy:37) at ch.qos.logback.classic.gaffer.GafferUtil.runGafferConfiguratorOn(GafferUtil.java:43) at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:65) at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148) at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85) at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55) at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128) at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107) at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295) at test.Test.start(Test.groovy:20) at org.vertx.groovy.platform.Verticle.start(Verticle.groovy:35) at org.vertx.groovy.platform.Verticle$start.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at org.vertx.groovy.platform.impl.GroovyVerticle.start(GroovyVerticle.groovy:59) at org.vertx.java.platform.impl.DefaultPlatformManager$11.run(DefaultPlatformManager.java:1171) at org.vertx.java.core.impl.Context$1.run(Context.java:127) at org.jboss.netty.channel.socket.nio.AbstractNioSelector.processTaskQueue(AbstractNioSelector.java:366) at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:290) at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:88) at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722)
SLF4J: Actual binding is of type
[ch.qos.logback.classic.util.ContextSelectorStaticBinder] 11:27:25,808 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.groovy] at [file:/c:/Users/mihai/Desktop/test/mods/mod-owner~mod-name~1.0.0-SNAPSHOT/logback.groovy]
println: after test.start CTRL-C to stop server
Building > :runMod
The sample app can be found in the attachment. Just unpack and run "gradlew runMod". Thanks, Mihai

Any help, please? Thanks, Mihai -- View this message in context: http://logback.10977.n7.nabble.com/logback-and-gradle-tp11525p11533.html Sent from the Users mailing list archive at Nabble.com.

Hi Mihai, Looking at the output it seems that while logback-classic.jar is visible to slf4j-api, logback-classic.jar is somehow no longer visible when Gaffer (logback's groovy configurator) tries to parse the logback.groovy file, which is quite unexpected. Have you tried asking for help on the gradle lists? Have you tried reproducing the problem in a tiny/minimal gradle project without any dependencies on org.vertx or org.jboss.netty? On my end I am looking at the class loader used when the GroovyShell (which Gaffer uses) parses groovy scripts which might explain the issue. On 11.03.2013 10:35, Mihai Cazacu wrote:
Hi,
I need some help to integrate logback into my app. I use gradle to automate the building and this error occurs when running "gradlew runMod" task:
[configuration ':archives', configuration ':compile', configuration ':default', configuration ':groovy', configuration ':provided', configuration ':runtime', configuration ':signatures', configuration ':testCompile',configuration ':testRuntime'] :cleanModsDir :clean BUILD SUCCESSFUL
Total time: 5.028 secs Download https://oss.sonatype.org/content/repositories/snapshots/io/vertx/vertx-core/... Download https://oss.sonatype.org/content/repositories/snapshots/io/vertx/vertx-platf... [configuration ':archives', configuration ':compile', configuration ':default', configuration ':groovy', configuration ':provided', configuration ':runtime', configuration ':signatures', configuration ':testCompile', configuration ':testRuntime'] Relying on packaging to define the extension of the main artifact has been deprecated and is scheduled to be removed in Gradle 2.0 Download https://oss.sonatype.org/content/repositories/snapshots/io/vertx/lang-groovy... :compileJava UP-TO-DATE :compileGroovy :processResources :classes :copyMod :runMod
println: before test.start SLF4J: Class path contains multiple SLF4J bindings. *SLF4J: Found binding in [jar:file:/c:/Users/mihai/Desktop/test/mods/mod-owner~mod-name~1.0.0-SNAPSHOT/lib/logback-classic-1.0.9.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/C:/Users/mihai/.gradle/wrapper/dists/gradle-1.4-bin/47n6g3pbi5plc7n8fn58nkinje/gradle1.4/lib/logback-classic-1.0.9.jar!/org/slf4j/impl/StaticLoggerBinder.class]* SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. Failed to instantiate [ch.qos.logback.classic.LoggerContext] Reported exception: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script1.groovy: 1: unable to resolve class ch.qos.logback.classic.Level @ line 1, column 1. import ch.qos.logback.classic.Level ^ Script1.groovy: 5: unable to resolve class ch.qos.logback.core.rolling.TimeBasedRollingPolicy @ line 5, column 1. import ch.qos.logback.core.rolling.TimeBasedRollingPolicy ^
Script1.groovy: 4: unable to resolve class ch.qos.logback.core.rolling.RollingFileAppender @ line 4, column 1. import ch.qos.logback.core.rolling.RollingFileAppender ^ Script1.groovy: 3: unable to resolve class ch.qos.logback.core.ConsoleAppender @ line 3, column 1. import ch.qos.logback.core.ConsoleAppender ^ Script1.groovy: 6: unable to resolve class ch.qos.logback.core.status.OnConsoleStatusListener @ line 6, column 1. import ch.qos.logback.core.status.OnConsoleStatusListener ^
Script1.groovy: 2: unable to resolve class ch.qos.logback.classic.encoder.PatternLayoutEncoder @ line 2, column 1. import ch.qos.logback.classic.encoder.PatternLayoutEncoder ^ Script1.groovy: 8: unable to resolve class ch.qos.logback.classic.Level @ line 8, column 1. import static ch.qos.logback.classic.Level.INFO <http://ch.qos.logback.classic.Level.INFO> ^ Script1.groovy: 9: unable to resolve class ch.qos.logback.classic.Level @ line 9, column 1. import static ch.qos.logback.classic.Level.WARN ^ 8 errors
at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:309) at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:927) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:575) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:524) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:279) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:258) at groovy.lang.GroovyShell.parseClass(GroovyShell.java:613) at groovy.lang.GroovyShell.parse(GroovyShell.java:625) at groovy.lang.GroovyShell.parse(GroovyShell.java:652) at groovy.lang.GroovyShell.parse(GroovyShell.java:643) at groovy.lang.GroovyShell$parse.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at ch.qos.logback.classic.gaffer.GafferConfigurator.run(GafferConfigurator.groovy:48) at ch.qos.logback.classic.gaffer.GafferConfigurator$run.callCurrent(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:49) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:133) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141) at ch.qos.logback.classic.gaffer.GafferConfigurator.run(GafferConfigurator.groovy:37) at ch.qos.logback.classic.gaffer.GafferUtil.runGafferConfiguratorOn(GafferUtil.java:43) at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:65) at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148) at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85) at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55) at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128) at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107) at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295) at test.Test.start(Test.groovy:20) at org.vertx.groovy.platform.Verticle.start(Verticle.groovy:35) at org.vertx.groovy.platform.Verticle$start.call(Unknown Source) at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) at org.vertx.groovy.platform.impl.GroovyVerticle.start(GroovyVerticle.groovy:59) at org.vertx.java.platform.impl.DefaultPlatformManager$11.run(DefaultPlatformManager.java:1171) at org.vertx.java.core.impl.Context$1.run(Context.java:127) at org.jboss.netty.channel.socket.nio.AbstractNioSelector.processTaskQueue(AbstractNioSelector.java:366) at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:290) at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:88) at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) at org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108) at org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722)
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder] 11:27:25,808 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.groovy] at [file:/c:/Users/mihai/Desktop/test/mods/mod-owner~mod-name~1.0.0-SNAPSHOT/logback.groovy]
println: after test.start CTRL-C to stop server > Building > :runMod
The sample app can be found in the attachment. Just unpack and run "gradlew runMod".
Thanks, Mihai
-- Ceki 65% of statistics are made up on the spot

Hi Ceki, Thanks for your reply! I've reported a JIRA issue for gradle (http://issues.gradle.org/browse/GRADLE-2707). Best regards, Mihai -- View this message in context: http://logback.10977.n7.nabble.com/logback-and-gradle-tp11525p11547.html Sent from the Users mailing list archive at Nabble.com.
participants (3)
-
cazacugmihai@gmail.com
-
ceki
-
Mihai Cazacu