0

このドキュメントに示されているように、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

私が間違っていることを理解できません。

4

1 に答える 1