grails - 如何为我的代码设置调试级别,但对其他所有操作设置错误

标签 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日志,仅打印ERROR日志。
  • 当我再次将根闭包更改为{ debug 'stdout', 'appStdOut' }时,我看到了所有框架和库的调试日志。

  • 这真让我发疯!我该如何告诉它在DEBUG及以上版本中为我的软件包打印,在ERROR及以上版本中为其他所有内容打印到stdout?

    最佳答案

    这应该做

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

    关于grails - 如何为我的代码设置调试级别,但对其他所有操作设置错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25218572/

    相关文章:

    grails - 我无法在 Grails 中安装 spring-security-core 插件

    logging - JMeter 同时登录控制台和日志查看器

    java - DailyRollingFileAppender,丢失前一天的数据

    grails - 是否可以将简单的grails应用程序转换为可以在Adobe CQ中运行的OSGi软件包?

    java - 负载下 Grails 应用程序中 WebappClassLoader 的锁定争用

    java - Log4j JMS 附加程序示例

    java.lang.NoSuchMethodError : org. apache.log4j.Logger 错误

    java - Log4j 在 JBoss 6 EAP 下不记录任何内容

    Grails 发送版本作为 PUT 请求的一部分

    grails - 使用内联grails插件运行grails应用程序时,无法在空对象异常上调用方法assetBaseUrl()