如何为我的代码设置DEBUG级别,但为其他所有内容设置ERROR

时间:2014-08-09 12:26:38

标签: grails log4j

我正在使用Grails应用程序。在我的Config.groovy中,我尝试配置log4j,以便我的应用程序代码以DEBUG级别登录,而所有groovy / grails / spring / hibernate代码(几乎所有其他代码)都以ERROR级别登录

我现在只想登录到控制台(stdout)。

经过众多博客文章后发表文章如此答案,我似乎仍然无法使其发挥作用。这是我目前的设置:

log4j = {

    appenders {
        appender new ConsoleAppender(name: "appStdOut",
                threshold: Level.toLevel("DEBUG"),
                layout: new PatternLayout("..."))
        appender new ConsoleAppender(name: "stdout",
                threshold: Level.toLevel("ERROR"),
                layout: new PatternLayout("..."))
    }

    root {
        error 'stdout'
        debug 'appStdOut'
    }

    error  stdout: [
                'org.codehaus.groovy.grails.web.servlet',
                'org.codehaus.groovy.grails.web.pages', 
                'org.codehaus.groovy.grails.web.sitemesh',
                'org.codehaus.groovy.grails.web.mapping.filter',
                'org.codehaus.groovy.grails.web.mapping',
                'org.codehaus.groovy.grails.commons', 
                'org.codehaus.groovy.grails.plugins', 
                'org.codehaus.groovy.grails.orm.hibernate',
                'org.springframework',
                'org.hibernate',
                'net.sf.ehcache.hibernate'
            ]

    debug   appStdOut: [ 'mondrack' ] // This is the package name for my app

}
  • 以上配置生成所有框架的DEBUG日志&图书馆也是。

  • 当我将根封闭更改为{ error 'stdout', 'appStdOut' }时,我的DEBUG日志不会被打印,只会打印出错误日志。

  • 当我再次将根关闭更改为{ debug 'stdout', 'appStdOut' }时,我会看到所有框架的DEBUG日志&库。

这真让我疯了!如何告诉它在DEBUG& amp;以上为我的包裹和错误&对于其他一切,对stdout?

1 个答案:

答案 0 :(得分:1)

这应该这样做

log4j = {
    appenders {
        def logPattern = '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{2} - %m%n'

        // define a console appender named 'stdout' that uses the above patter
        console name: 'stdout', layout: pattern(conversionPattern: logPattern)
    }

    root {
        // the root logger - from which all other loggers inherit - uses the 'stdout' appender
        // and logs at the error level                     
        error 'stdout'
    }

    // packages that begin with 'mondrack' and Grails artefacts log at the debug level
    debug 'mondrack', 'grails.app'
}