如何记录Grails命令对象错误?

Jam*_*hon 2 validation grails logging

在Grails中记录错误的命令对象的最有效方法是什么?

我当前的日志只是,

if (!cmd.validate()) log.debug("command invalid ${cmd.errors}")
Run Code Online (Sandbox Code Playgroud)

但它只是喷出一个难以理解的输出混乱.

有人提出改进命令对象日志的建议吗?

Bur*_*ith 7

messageSourcebean 添加依赖注入:

def messageSource
Run Code Online (Sandbox Code Playgroud)

然后,您可以构建一个由字段名称键入的映射,其中包含该字段的验证错误:

def locale = Locale.default
def stringsByField = [:].withDefault { [] }
for (fieldErrors in cmd.errors) {
   for (error in fieldErrors.allErrors) {
      stringsByField[error.field] << messageSource.getMessage(error, locale)
   }
}
Run Code Online (Sandbox Code Playgroud)

你可以println stringsByField按键运行或查找个别问题.

这里我使用默认的Locale,但是如果你使用本地化,请使用当前的Locale.