如何将所有日志与其在grails中的请求相关联?

时间:2010-08-23 16:49:55

标签: grails log4j

在我们的grails应用程序中,我们记录了很多,但是需要一种机制来将所有这些消息与正在处理的请求/响应相关联。事实证明,生成请求UUID非常容易,但现在我希望将该id附加到请求上下文中生成的每条日志消息中,而不在每条日志消息中传递该ID。是否有人实现了这样的系统,以便您可以将所有日志语句关联在一起?

2 个答案:

答案 0 :(得分:4)

log4j的一个相当模糊的功能,称为MDC,似乎正是您所需要的。

http://gustlik.wordpress.com/2008/07/05/user-context-tracking-in-log4j/

这样的东西

如果您使用自定义AppFilter设置请求唯一值,它在Grails中也能正常工作。

答案 1 :(得分:0)

您可以尝试使用RequestContextHolder

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/context/request/RequestContextHolder.html

ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
log.debug attr.getRequest().getSession()

获得会话对象后,您可以获得隐藏的任何标识符吗?