GrailsでLog4Jログにユーザープリンシパルを記録するにはどうしたらいいですか?GrailsのSpringセキュリティプリンシパル
例外が発生したときに現在のログインの名前を確認したい、つまり、各アクションで現在のプリンシパルを記録することができない場合があります。例外が発生したときにユーザー名をログパターンに入れることができるように、ユーザー名が格納されている必要があります。
GrailsでLog4Jログにユーザープリンシパルを記録するにはどうしたらいいですか?GrailsのSpringセキュリティプリンシパル
例外が発生したときに現在のログインの名前を確認したい、つまり、各アクションで現在のプリンシパルを記録することができない場合があります。例外が発生したときにユーザー名をログパターンに入れることができるように、ユーザー名が格納されている必要があります。
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を参照してください。
このようにすると、コントローラ/サービスログインからのログの負担が軽減されます。
hereと記載されているように、この目的でgrails.plugins.springsecurity.SpringSecurityService
ユーティリティクラスを使用できます。
class SomeController {
def springSecurityService
def someAction = {
def principal = springSecurityService.principal
...
}
}
申し訳ありませんが、ユーザー名がログパターンに含まれる可能性があります。 –