Grailsでエラーのあるコマンドオブジェクトをログに記録する最も効果的な方法は何ですか?
私の現在のロギングは、
if (!cmd.validate()) log.debug("command invalid ${cmd.errors}")
しかし、それは判読不能な出力の混乱を吐き出すだけです。
コマンドオブジェクトのロギングを改善するための提案はありますか?
Grailsでエラーのあるコマンドオブジェクトをログに記録する最も効果的な方法は何ですか?
私の現在のロギングは、
if (!cmd.validate()) log.debug("command invalid ${cmd.errors}")
しかし、それは判読不能な出力の混乱を吐き出すだけです。
コマンドオブジェクトのロギングを改善するための提案はありますか?
messageSource
Beanの依存性注入を追加します。
def messageSource
次に、そのフィールドの検証エラーを含むフィールド名でキー付けされたマップを作成できます。
def locale = Locale.default
def stringsByField = [:].withDefault { [] }
for (fieldErrors in cmd.errors) {
for (error in fieldErrors.allErrors) {
stringsByField[error.field] << messageSource.getMessage(error, locale)
}
}
キーごとに個々の問題を実行println stringsByField
または検索するだけです。
ここではデフォルトの Locale を使用していますが、ローカリゼーションを使用している場合は、現在のロケールをリクエストに使用してください。
cmd.errors.allErrors.each {
log.debug it
}
編集(より詳細)
cmd.errors.allErrors.each {err ->
log.debug("[$err.field]: $err")
}