在Grails中记录Spring Spring Security Principal

时间:2010-12-06 04:19:15

标签: grails log4j spring-security

如何使用Grails在Log4J日志中记录用户主体?

我希望在发生异常时看到当前登录的名称,即在每个操作上记录当前主体都不起作用。我需要存储用户名,以便在发生异常时,用户名可以在日志模式中。

2 个答案:

答案 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 
         ...
     }
}