添加会话详细信息到控制器日志方法

时间:2014-01-19 22:56:16

标签: grails

我有一个控制器,其中大多数操作都需要用户登录。对于那些我希望以调试模式登录用户id的操作,以防我需要跟踪用户可能在生产中遇到的问题。例如:

def controller {

def action1 {
   log.debug('action1 called for ' + user.id)
   ...
}

def action2 {
   log.debug('action2 called for ' + user.id)
   ...
}

这有点多余。有没有办法重构,所以它遵循DRY原则?我正在使用log4j,如果这有所不同。

1 个答案:

答案 0 :(得分:1)

我建议使用a filter在您的控制器中应用此行为。这样,您可以将过滤器重用于多个控制器或操作。

虽然文档中有一个类别的日志记录过滤器示例,但这是一个非常简单的版本,它演示了相同的概念。

package com.example
class LoggingFilterExample {
  def filters = {
    all(controller:"*", action:"*") {
      before = {
        log.debug("${controllerName} ${actionName} called for ${session.userid}")
      }
    }
  }
}