6

我无法再使用 gradle 任务 `jettyRuǹ 启动我的记录器。多个绑定的第一个问题不是问题。但是现在(我猜在升级到 gradle 1.4 之后)我的记录器没有启动。slf4j 文档说以编程方式重置上下文,但我更愿意通过配置来完成,因为 jettyRun 仅用于开发。

$ 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
4

1 回答 1

5

最后我发现了问题所在:

  • 记录上下文在第一次调用记录器时被延迟初始化。
  • 在我的 Web 应用程序(仅执行异步调用的单页 Web 应用程序)的上下文中,第一页调用了 2 个异步请求
  • 每个请求都有一个记录器并且初始化是同时进行的,这就是为什么我的一些记录器实现被 nop impl 取代的原因。
  • 通过在应用程序启动时添加记录器调用,上下文被正确初始化
于 2013-04-15T10:37:25.483 回答