Skip to content

MDC fields not properly logged #23

Description

@msche

Dear logtail team.

I think MDC fields are not properly logged due to the async approach of logtail. In my case I have a method like follows:

   try {
      MDC.put("TRACE_ID", UUID.randomUUID().toString());
      LOG.info("Do your thing");
    } finally {
      MDC.remove("TRACE_ID");
    }

Within log tail the logging event is queued and send later. At the moment of sending, the MDC field is already removed.

I made the following patch to Log tail that seems to fix the issue. At the moment of queuing the log event, I create a clone of the MDC context map so that I have the situation in the event as it was at the moment of logging.

class AsyncLogtailAppender : LogtailAppender() {

    override fun append(event: ILoggingEvent) {
        if (event is LoggingEvent) {
            event.mdcPropertyMap = MDC.getCopyOfContextMap()
        }
        super.append(event)
    }
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions