如何使用Grails在Log4J日志中记录用户主体?
我希望在发生异常时看到当前登录的名称,即在每个操作上记录当前主体都不起作用。我需要存储用户名,以便在发生异常时,用户名可以在日志模式中。
答案 0 :(得分:2)
我假设您应该使用log4j的嵌套诊断上下文(NDC)。请参阅http://logging.apache.org/log4j/1.2/manual.html中的相应章节。
我们的想法是创建一个grails过滤器帽,根据每个请求管理NDC数据(推/弹)并在记录器的模式中使用%x,请参阅http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html。
通过这样做,您已将日志记录的负担与控制器/服务登录分开。
答案 1 :(得分:1)
根据记录here,您可以使用grails.plugins.springsecurity.SpringSecurityService
实用程序类来实现此目的。
class SomeController {
def springSecurityService
def someAction = {
def principal = springSecurityService.principal
...
}
}