从Grails异常解析器关闭所有异常日志记录

从Grails异常解析器关闭所有异常日志记录,grails,Grails,我想通过这样做: appenders { ... 'null' name: 'stacktrace' ... } 我在我的日志中看不到任何异常。我仍然在日志中看到GrailExceptionResolver中记录了异常 ERROR errors.GrailsExceptionResolver - Exception occurred when processing request: [GET] /api//products - parameters: 但对于某

我想通过这样做:

appenders {
     ...
     'null' name: 'stacktrace'
     ...
}
我在我的日志中看不到任何异常。我仍然在日志中看到GrailExceptionResolver中记录了异常

 ERROR errors.GrailsExceptionResolver - Exception occurred when processing request: [GET] /api//products - parameters:
但对于某些例外情况,我不想记录stacktrace。这些都是良性的事情,但由于遗留代码,我不能将它们作为异常删除,因为它们在深层调用堆栈中使用

所以我只需要控制Grails记录每个异常的方式


任何提示?

您可以添加log4j过滤器GrailExceptionResolver

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)
        }
    }