logback-logtail icon indicating copy to clipboard operation
logback-logtail copied to clipboard

MDC fields not properly logged

Open msche opened this issue 1 year ago • 1 comments

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)
    }
}

msche avatar Sep 16 '24 07:09 msche

Thank you for the report and the fix suggestion @msche! I appreciate it!

I'm passing this to the team to get it fixed.

Thanks again!

curusarn avatar Sep 16 '24 08:09 curusarn