このドキュメントに示されているように、Kamon を使用して MDC の伝播を試みていますが、彼らが言うようには機能していないようです
Play framework - 2.5
kamon-core - 0.6.2
kamon-play-25 - 0.6.2
私のログバックパターン:
<pattern>%d{HH:mm:ss.SSS} [%thread] [%level] [%traceToken]- %logger{36}\(%L\) %X{X-ApplicationId} - %message%n%xException</pattern>
フィルターを作成しました:
class AccessLoggingFilter @Inject() (implicit val mat: Materializer, ec: ExecutionContext) extends Filter with LazyLogging { val ApplicationIdKey = AvailableToMdc("X-ApplicationId") def apply(next: (RequestHeader) => Future[Result])(request: RequestHeader): Future[Result] = { TraceLocal.storeForMdc("X-ApplicationId", request.id.toString) logger.error("first Location") withMdc { logger.error("Second location") next(request) }}}
そしてそれを次のように追加しました:
class MyFilters @Inject() (accessLoggingFilter: AccessLoggingFilter) extends DefaultHttpFilters(accessLoggingFilter)
サーバーへの http 呼び出しを実行すると、次の出力が得られます。
c.v.i.utils.AccessLoggingFilter(24) - first Location c.v.i.utils.AccessLoggingFilter(26) 1 - Second location
その後のすべてのログ出力に「1」が表示されないX-ApplicationId
私が間違っていることを理解できません。