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

时间:2013-04-25 00:39:06

标签: validation grails logging

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

我当前的日志记录只是,

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

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

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

2 个答案:

答案 0 :(得分: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或按键查找个别问题。

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

答案 1 :(得分:4)

cmd.errors.allErrors.each {
    log.debug it
}

修改(更详细)

cmd.errors.allErrors.each {err ->
    log.debug("[$err.field]: $err")
}