2013-04-14 6 views
5

Ich kann meine Logger nicht mehr mit der Mega-Task `jettyRuª starten. Das erste Problem mit Mehrfachbindungen war kein Problem. Aber jetzt (nach dem Upgrade auf Grad 1.4, denke ich) starten meine Logger nicht. Der slf4j doc sagt, dass der Kontext programmgesteuert zurückgesetzt wird, aber ich würde es vorziehen, dies durch Konfiguration zu tun, da jettyRun nur für die Entwicklung verwendet wird.slf4j logback succeteLogger

$ gradle jettyRun 
:compileJava UP-TO-DATE 
:processResources UP-TO-DATE 
:classes UP-TO-DATE 
:jettyRun 
SLF4J: Class path contains multiple SLF4J bindings. 
SLF4J: Found binding in [jar:file:/opt/gradle-1.4/lib/logback-classic-1.0.9.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: Found binding in [jar:file:/home/bertrand/.gradle/caches/artifacts-23/filestore/ch.qos.logback/logback-classic/1.0.9/jar/258c3d8f956e7c8723f13fdea6b81e3d74201f68/logback-classic-1.0.9.jar!/org/slf4j/impl/StaticLoggerBinder.class] 
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. 
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder] 
SLF4J: The following loggers will not work because they were created 
SLF4J: during the default configuration phase of the underlying logging system. 
SLF4J: See also http://www.slf4j.org/codes.html#substituteLogger 
SLF4J: org.yajug.users.api.MembershipController 
SLF4J: org.yajug.users.json.Serializer 
SLF4J: org.yajug.users.api.MemberController 
SLF4J: org.yajug.users.service.MemberServiceImpl 
SLF4J: org.yajug.users.persistence.MongoConnector 
+0

ich in Tomcat 7 einbetten in meinem IDE getestet habe auch korrekt initialisiert und ich habe das gleiche Problem, so scheint es nicht verwandt ist zu Gradle jettyRun oder die Mehrfachbindungen – krampstudio

Antwort

2

Schließlich fand ich, was falsch war:

ist
  • Der Logging-Kontext träge, zu einem Logger beim ersten Aufruf initialisiert.
  • Im Kontext meiner Web-App (eine einzelne Seite Web-App, die nur async Anrufe), die erste Seite rief 2 async Anfragen
  • jede Anfrage hatte einen Logger und die Initialisierung wurde gleichzeitig gemacht, es ist der Grund, warum Einige meiner Logger-Implementierungen wurden durch einen NOP-Impl ersetzt.
  • durch einen Logger Anruf auf der App-Startliste hinzufügen, wird der Kontext
+0

Wie haben Sie den Loggeraufruf beim Start von ap hinzugefügt? Ich habe versucht, einen ServletContextListener zu verwenden, und es hat nicht funktioniert. Wo haben Sie diesen Logger-Aufruf hinzugefügt? –

+0

Da ich Guice verwende, wird der erste Aufruf von einem GuiceServletContextListener ausgeführt. Wenn es helfen kann, ist mein Quellcode auf Github verfügbar: https://github.com/krampstudio/YajMember – krampstudio

+0

Dies ist alles BS. Es gibt einen Fehler in SLF4J, der hier dokumentiert ist: http://bugzilla.slf4j.org/show_bug.cgi?id=176. Es könnte funktionieren, Ihre Log-in-Einträge in einen statischen Block zu schieben oder einfach LoggerFactory.getLogger ("ROOT") oder etwas in diesem statischen Block auszuführen. – ingyhere

Verwandte Themen