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

如何在grails中将所有日志与其请求关联?,grails,log4j,Grails,Log4j,在grails应用程序中,我们记录了很多日志,但需要一种机制将所有这些消息与正在处理的请求/响应关联起来。事实证明,生成请求UUID非常简单,但现在我希望将该id附加到请求上下文中生成的每个日志消息中,而不在每个日志消息中传递该id。是否有人实现了这样的系统,以便您可以将所有日志语句关联在一起?您可以尝试使用RequestContextHolder 一旦获得会话对象,就可以获得隐藏的任何标识符?log4j的一个相当模糊的特性,称为MDC,似乎正是您所需要的 差不多 如果您使用自定义AppFil

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

您可以尝试使用RequestContextHolder


一旦获得会话对象,就可以获得隐藏的任何标识符?

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

差不多


如果您使用自定义AppFilter来设置请求的唯一值,那么它在Grails中也可以正常工作。

谢谢您的建议,但我有一个解决此问题的方法。我应该更具体地回答我的问题。我的所有日志语句插入requestId都没有问题,并且可以在请求上下文中存储我想要的。相反,我希望避免在所有日志语句中插入requestId,而是让它们像其他上下文一样自动插入。这看起来正是我所需要的。非常感谢。
ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
log.debug attr.getRequest().getSession()