2016-11-28 78 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偵聽器,然後在請求完成時將其刪除。 –

回答

相關問題