我正在使用ThreadContext在我的java web应用程序中用UUID标记所有日志。我使用过滤器来执行此操作,使用doFilter方法中的此代码来标记每个请求。
if (request instanceof HttpServletRequest){
ThreadContext.put("id", UUID.randomUUID().toString());
}
chain.doFilter(request, response);
这会在每个执行的新请求中发生变化,这是正常的,因为它在每个请求中都被调用。我想要做的是为同一个会话/用户/与应用程序的交互的所有交互使用相同的标记。
我考虑在ThreadContext中添加用户名,并每次检查会话用户名是否与我在线程上下文中的用户名不同,但由于ThreadContext是线程安全的,并且为每个请求生成了一个新线程,这不起作用。
你会怎么做呢?
log4j2中有标准方法吗?
另外,这是鱼标记的想法,还是不适合这样的任务?