2014-01-19 54 views
1

我有一個控制器,其中大部分操作需要用戶登錄。對於那些操作,我希望以調試模式登錄用戶的ID以防萬一我需要跟蹤用戶問題可能正在生產中。例如:將會話詳細信息添加到控制器日誌方法

def controller { 

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

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

這會變得有點多餘。有沒有一種方法來重構它,以便遵循DRY原則?如果這有所幫助,我正在使用log4j。

回答

1

我會建議使用a filter在您的控制器中應用此行爲。這樣您可以重複使用多個控制器或操作的過濾器。

雖然文檔中有一個排序日誌過濾器的例子,但這是一個非常簡單的版本,它展示了相同的概念。

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

良好的通話。我最終使用request.userPrincipal?.name來顯示spring security的用戶名。 – spock99

相關問題