2016-11-28 57 views
0

我正在使用Wildfly 10,我正在使用它的日志子系统。我如何将用户名(主体)附加到Wildfly中的每个日志行?

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

有没有一种通用的方法来做到这一点,而不是将UserName附加到我的应用程序中的每个日志消息?

例如,我可以这样做:

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

但我怎样才能得到日志子系统为每个日志信息做到这一点?

+1

你会要么必须添加用户或使用类似'MDC'(取决于你的日志框架)。记录本身不具有用户的任何知识。 –

+0

非常感谢您的回答。我最好的想法是创建一个Wildfly模块,它实现了引用当前会话的自定义日志处理程序。这可能吗?我很难弄清楚如何构建和部署一个cusom wildfly模块。如果有人能指出我正确的方向,我将不胜感激。 – Thomas

+1

它不会工作,因为日志记录不知道会话是什么。您可能能够使用将用户插入到MDC中的servlet侦听器,然后在请求完成时将其删除。 –

回答

相关问题