当我的 Grails 2.2.4 应用程序中出现未捕获的异常时,我希望得到通知。Log4j 有一个 SMTPAppender 做类似的事情,但仅基于特定的日志级别。在我的应用程序中,所有可用日志级别中已经有很多日志条目,因此发送 ERROR 或 FATAL 电子邮件并不是一个真正的选项,因为它还包含非异常条目。
在 Grails 中过滤未捕获的异常非常容易,我只需将它们重定向到特定的控制器并在那里处理它:
static mappings = {
[...]
"500"(controller: "errors", action: "serverError")
}
我的计划是引入我自己的日志级别,并将其仅用于未捕获的异常。文档表明这一点:
final Level EXCEPTION = Level.forName("EXCEPTION", 50);
logger.log(EXCEPTION, "uncaught exception", e);
但我不知道如何在 Grails 中将其与注入的log
对象一起使用。它仅支持基本选项,例如log.error('foo',e)
. Grails 文档说明了如何添加自定义附加程序,但没有关于自定义级别(或者我错过了吗?!)
有什么建议么?