4

在 grails 中,我想停止记录控制器中发生的一些特定异常。

我已使用 urlmapping 管理此异常以呈现客户警告页面

es 我的 url 映射

"500"(controller:'error', action:'excOne', exception: MyExceptionOne)       
"500"(controller:'error', action:'excTwo', exception: MyExceptionTwo)

但是这个异常继续被 log4j 记录。如何将它们排除在日志记录之外?

这是我的 log4j 配置:

log4j = {
      error  'org.codehaus.groovy.grails.web.servlet',  //  controllers
        'org.codehaus.groovy.grails.web.pages', //  GSP
        'org.codehaus.groovy.grails.web.sitemesh', //  layouts
        'org.codehaus.groovy.grails.commons', // core / classloading
        'org.codehaus.groovy.grails.plugins', // plugins
        'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
        'org.springframework',
        'org.hibernate',
        'net.sf.ehcache.hibernate',
        'grails.app.services.org.grails.plugin.resource',
        'grails.app.taglib.org.grails.plugin.resource',
        'grails.app.resourceMappers.org.grails.plugin.resource',
        'grails.app.services.NavigationService'


    warn   'org.mortbay.log'    
    debug  "com.myproject.*"

    debug  "grails.app"
    debug  "com.myproject.*"

appenders {
console name:'stdout', layout:pattern(conversionPattern: '[%r] %c{2} %m%n')
}

root {
error 'stdout'
warn 'stdout'
additivity = true
} 

}
4

2 回答 2

0

我没有设法删除日志中所有提到的异常,但我所做的是我阻止了堆栈跟踪使日志混乱:

创建一个按照您想要的方式运行的 StackTracePrinter 实现。

package com.myStuff
import org.codehaus.groovy.grails.exceptions.DefaultStackTracePrinter

class MyStackTracePrinter extends DefaultStackTracePrinter {

  String prettyPrint(Throwable throwable) {
    if (throwable instanceof MyException) return "<stack trace suppressed>"
    return super.prettyPrint(throwable)
  }
}

然后,在Config.groovy

grails.logging.stackTracePrinterClass = 'com.myStuff.MyStackTracePrinter'
于 2015-06-02T15:55:08.773 回答
-1

尝试:

off "your.class.file"

在代码行之后:

debug  "com.myproject.*"

只要确保您提供正确的类路径,如果这不起作用,请告诉我类文件路径?

于 2013-03-25T07:44:36.553 回答