仅向所有 LogLevel 添加一次全局值,这将影响所有地方

问题描述

我在几个地方 (Log4j) 的代码添加了 Logger。 像 Logger.info(" some thing "); 我的日志很多地方都是这样的,

Timestamp LogLevel SometText SomeMoreText

每当有新的请求出现时, 我想在每个 logLevel 中添加一些像 ID:CurrentValuetime 这样的值,这将是相同的,直到请求出现在所有 LogLevel 中,所以我的日志应该像

Timestamp LogLevel ID:CurrentValuetime SometText SomeMoreText

ID:CurrentValuetime 在所有地方都应该相同,它应该是全局的和最终的,应该自动附加到所有日志级别

我怎样才能做到这一点?

解决方法

在 MDC 的帮助下实现了

的帮助下创建了一个servlet过滤器
 MDC.put("UniqueID",UIDValue);

我能够立即将唯一值添加到日志中。

try {
             chain.doFilter(request,response);
            } finally {           
                MDC.remove("UniqueID");
              }

并在请求完成后删除值