2015-01-13 2 views
1

에서 모든 예외 로깅을 해제 :수행하여 내가 생각 Grails의 예외 해결

appenders { 
    ... 
    'null' name: 'stacktrace' 
    ... 
} 

내가 내 로그에 예외를 볼 수 없을 것입니다. 내 로그에서 GrailsExceptionResolver에 예외가 기록되는 것을 볼 수 있습니다.

ERROR errors.GrailsExceptionResolver - Exception occurred when processing request: [GET] /api//products - parameters: 

하지만 일부 예외의 경우 스택 추적을 기록하지 않으려합니다. 이들은 일종의 양심적 인 일이지만 레거시 코드로 인해 심층 호출 스택에서 사용할 때 예외로 제거 할 수는 없습니다.

그래서 Grails가 모든 예외를 기록하는 방식을 제어해야합니다.

팁이 있습니까?

+0

http://stackoverflow.com/questions/4972954/how-to-disable-loggers-of-a-class-or-of 전체 패키지 – Vahid

답변

1

log4j 필터 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) 
     } 
    }