2013-04-14 18 views
5

Nie jestem już w stanie uruchomić moich rejestratorów za pomocą zadania gradle `jettyRuǹ. Pierwszy problem z wieloma powiązaniami nie stanowił problemu. Ale teraz (po uaktualnieniu do wersji 1.4, jak sądzę) moje rejestratory się nie uruchamiają. Doktor slf4j mówi, żeby programowo zresetować kontekst, ale wolałbym to zrobić poprzez konfigurację, ponieważ jettyRun służy tylko do programowania.slf4j logback substituteLogger

$ 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

Ja również testowane w Tomcat 7 ankiety w moim IDE i mam ten sam problem, wydaje się, że nie jest związana z Gradle jettyRun lub wiele powiązań – krampstudio

Odpowiedz

2

Wreszcie znalazłem, co się stało:

  • Kontekst rejestrowanie jest inicjowany leniwie, na pierwsze wezwanie do rejestratora.
  • W kontekście mojej aplikacji internetowej (pojedynczy app strona internetowa, która zrobić tylko asynchronicznych wywołań), pierwsza strona dzwoni 2 asynchronicznie żąda
  • każde żądanie miał rejestratora i inicjalizacja została wykonana równocześnie, to jest powód dlaczego niektóre z moich implementacji rejestratorów zastąpione przez nop impl.
  • dodając połączenia rejestratora na starcie aplikacji, kontekst jest prawidłowo zainicjowany
+0

W jaki sposób dodałeś wywołanie rejestratora podczas uruchamiania ap? Próbowałem użyć ServletContextListener i nie zadziałało. Gdzie dodałeś to połączenie z rejestratorem? –

+0

Ponieważ używam Guice, pierwsze wywołanie jest tworzone przez GuiceServletContextListener. Jeśli może pomóc mój kod źródłowy jest dostępny na Github: https://github.com/krampstudio/YajMember – krampstudio

+0

To wszystko BS. W dokumencie SLF4J udokumentowano błąd: http://bugzilla.slf4j.org/show_bug.cgi?id=176. Może to popchnąć twoje logowania do statycznego bloku lub po prostu uruchomić LoggerFactory.getLogger ("ROOT") lub coś w tym bloku statycznym. – ingyhere