1
在Grails中记录错误的命令对象的最有效方法是什么?如何记录Grails命令对象错误?
我当前的记录是正义的,
if (!cmd.validate()) log.debug("command invalid ${cmd.errors}")
,但它只是里喷出输出的不可读的混乱。
任何人都有任何建议来改善命令对象的日志记录?
在Grails中记录错误的命令对象的最有效方法是什么?如何记录Grails命令对象错误?
我当前的记录是正义的,
if (!cmd.validate()) log.debug("command invalid ${cmd.errors}")
,但它只是里喷出输出的不可读的混乱。
任何人都有任何建议来改善命令对象的日志记录?
添加依赖注入的messageSource
豆:
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
或按键查找各个问题。
在这里,我使用默认的区域设置,但是如果您使用的是本地化,请使用当前的区域设置。
cmd.errors.allErrors.each {
log.debug it
}
编辑(更详细)
cmd.errors.allErrors.each {err ->
log.debug("[$err.field]: $err")
}
不会'log.debug(cmd.errors.allErrors)'是一个更简单的方法来做到这一点? – 2013-04-25 14:53:34
你最终会再次喷涌。遍历每个'error'你可以在每个'field'(与@Burt在他的回答中提到的同义词)和'log'根据你的需要得到一个句柄。看我的编辑。 – dmahapatro 2013-04-25 15:06:43
啊,我明白你的意思了。 – 2013-04-25 15:07:14