6

gradle タスク「jettyRuǹ」を使用してロガーを開始できなくなりました。複数のバインドに関する最初の問題は問題ではありませんでした。しかし、現在 (gradle 1.4 にアップグレードした後だと思います)、ロガーが起動しません。slf4j doc には、コンテキストをプログラムでリセットするように記載されていますが、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 に答える