我如何将用户名(主体)附加到 Wildfly 中的每个日志行?

How can i append the username (principal) to each log line in Wildfly?

我正在使用 Wildfly 10 并使用其日志子系统。

现在,我需要将会话中当前登录用户(主体)的登录名附加到 JBoss 日志子系统处理的每条日志消息中。

是否有通用的方法来执行此操作,而不是将用户名附加到我的应用程序中的每个日志消息?

例如我可以这样做:

        HttpServletRequest request = (HttpServletRequest)externalContext.getRequest();
        UserModel user = (UserModel)request.getSession().getAttribute("user");
        String username = user.getName();

但是我怎样才能让日志子系统为每条日志消息执行此操作?

正如 James R. Perkins 所建议的,这可以通过使用 MDC(映射诊断上下文)来完成。

可以在此处找到有关其工作原理的示例: https://veerasundar.com/blog/2009/11/log4j-mdc-mapped-diagnostic-context-example-code/