2010-12-06 9 views
1

GrailsでLog4Jログにユーザープリンシパルを記録するにはどうしたらいいですか?GrailsのSpringセキュリティプリンシパル

例外が発生したときに現在のログインの名前を確認したい、つまり、各アクションで現在のプリンシパルを記録することができない場合があります。例外が発生したときにユーザー名をログパターンに入れることができるように、ユーザー名が格納されている必要があります。

答えて

2

log4jのネスト診断コンテキスト(NDC)を使用する必要があります。 http://logging.apache.org/log4j/1.2/manual.htmlの各章を参照してください。

グライスフィルタハットを作成すると、リクエストごとにNDCデータ(プッシュ/ポップ)が管理され、ロガーのパターンで%xが使用されます。http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.htmlを参照してください。

このようにすると、コントローラ/サービスログインからのログの負担が軽減されます。

1

hereと記載されているように、この目的でgrails.plugins.springsecurity.SpringSecurityServiceユーティリティクラスを使用できます。

class SomeController {  
    def springSecurityService  
    def someAction = { 
     def principal = springSecurityService.principal 
     ... 
    } 
} 
+1

申し訳ありませんが、ユーザー名がログパターンに含まれる可能性があります。 –