我有一个控制器,其中大多数操作都需要用户登录。对于那些我希望以调试模式登录用户id的操作,以防我需要跟踪用户可能在生产中遇到的问题。例如:
def controller {
def action1 {
log.debug('action1 called for ' + user.id)
...
}
def action2 {
log.debug('action2 called for ' + user.id)
...
}
这有点多余。有没有办法重构,所以它遵循DRY原则?我正在使用log4j,如果这有所不同。
答案 0 :(得分:1)
我建议使用a filter在您的控制器中应用此行为。这样,您可以将过滤器重用于多个控制器或操作。
虽然文档中有一个类别的日志记录过滤器示例,但这是一个非常简单的版本,它演示了相同的概念。
package com.example
class LoggingFilterExample {
def filters = {
all(controller:"*", action:"*") {
before = {
log.debug("${controllerName} ${actionName} called for ${session.userid}")
}
}
}
}