我想:
appenders {
...
'null' name: 'stacktrace'
...
}
我会在日志中看到没有例外。我仍然在我的日志中看到GrailsExceptionResolver中记录了异常。
ERROR errors.GrailsExceptionResolver - Exception occurred when processing request: [GET] /api//products - parameters:
但是对于某些例外情况,我不想记录堆栈跟踪。这些是一些良性的东西,但由于遗留代码,我不能将它们作为异常删除,因为它们在深度调用堆栈中使用。
所以我只需要控制Grails记录每个异常的方式。
任何提示?
答案 0 :(得分:1)
您可以添加log4j Filter GrailsExceptionResolver。
public class ExceptionLoggerFilter extends Filter {
String loggerClass;
@Override
public int decide(LoggingEvent event) {
if (event.getLoggerName().equals(loggerClass)) {
if (event.getThrowableInformation() != null) {
return Filter.DENY;
}
}
return Filter.NEUTRAL;
}
public String getLoggerClass() {
return loggerClass;
}
public void setLoggerClass(String loggerClass) {
this.loggerClass = loggerClass;
}
}
并在BootStrap.groovy
中注册此过滤器 def init = { servletContext ->
Logger.rootLogger.allAppenders.each { appender ->
ExceptionLoggerFilter filter = new ExceptionLoggerFilter()
filter.loggerClass = "org.codehaus.groovy.grails.web.errors.GrailsExceptionResolver"
filter.activateOptions()
appender.addFilter(filter)
}
}