2

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

我目前的记录只是,

if (!cmd.validate()) log.debug("command invalid ${cmd.errors}")

但它只是吐出一团难以理解的输出。

有人对改进命令对象的日志记录有任何建议吗?

4

2 回答 2

7

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通过按键运行或查找个别问题。

在这里,我使用默认区域设置,但如果您使用本地化,请使用当前的本地化请求。

于 2013-04-25T02:18:10.823 回答
4
cmd.errors.allErrors.each {
    log.debug it
}

编辑(更详细)

cmd.errors.allErrors.each {err ->
    log.debug("[$err.field]: $err")
}
于 2013-04-25T01:49:13.390 回答