在Grails中记录错误的命令对象的最有效方法是什么?
我当前的日志记录只是,
if (!cmd.validate()) log.debug("command invalid ${cmd.errors}")
但是它只是吐出一堆难以理解的输出。
有人建议改进命令对象的日志记录吗?
答案 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")
}