所有级别的日志中每个用户/会话都有唯一的 ID?Log4J?

Tos*_*kan 2 jsf logging log4j uniqueidentifier

我们正在进行一些性能测试,以确定应用程序的哪些步骤需要多少时间。当然,使用正则表达式轻松解析/过滤日志是一个魅力。针对问题:我们的jsf应用程序被分成几个项目,这些项目被其他(非jsf)应用程序使用。我的第一个方法是:

if(logger.isDebugEnabled())
        logger.debug("Service call took: " + (System.currentTimeMillis() - time)+ " JSESSIONID="+CookieUtil.getJsessionId(FacesContext.getCurrentInstance())) ;
Run Code Online (Sandbox Code Playgroud)

(CookieUtil 将从 HttpServletRequest 中读取 sessionId)

但是……显然其他项目不喜欢对 JSF 库的依赖,也不喜欢对我整洁的 CookieUtil 的依赖。log4j 提供了什么吗?还有其他工具/概念吗?

Dav*_*ple 5

您可以使用 log4j MDC 完成您正在寻找的任务: Log4j MDC

并使用类似于此示例的 Servlet Filter: MDCServletFilter