【问题标题】:logging my application's classes at DEBUG level, all others at WARN在 DEBUG 级别记录我的应用程序的类,在 WARN 记录所有其他类
【发布时间】:2014-08-20 16:12:35
【问题描述】:

通过添加以下 Spring bean,我已将 Grails 应用程序配置为从 /conf/log4j.properties 文件而不是 Config.groovy 中更常见的 DSL 读取 log4j 配置:

log4jConfigurer(MethodInvokingFactoryBean) {
    targetClass = "org.springframework.util.Log4jConfigurer"
    targetMethod = "initLogging"
    arguments = ["/conf/log4j.properties", 1000 * 60] // 2nd arg is refresh interval in ms
}

我的目标是在 DEBUG 级别记录应用程序本身中的所有类,并在 WARN 级别记录所有其他类。 /conf/log4j.properties 包含以下内容:

log4j.logger.com.myapp=DEBUG, CONSOLE
log4j.logger.grails.app=DEBUG, CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-5p myapp %c{3} %d{HH:mm:ss,SSS} %t : %m%n

似乎命名空间com.myapp 用于我的应用程序中的常规类(例如src/groovy 下的那些),而命名空间grails.app 用于Grails 人工制品(控制器、服务、标记库等)。但是grails.app 命名空间还包括来自插件的人工制品,我不想在 DEBUG 级别记录。

有没有办法仅为我的应用程序中的类启用调试日志记录?

【问题讨论】:

    标签: grails logging log4j


    【解决方案1】:

    您将包附加到 grails.app.controllers 以获取您的应用程序。

    info 'grails.app.controllers.mypackage'
    

    【讨论】:

      【解决方案2】:

      添加以下解决了问题

      log4j.logger.grails.app.conf.com.myapp=DEBUG, CONSOLE
      log4j.logger.grails.app.filters.com.myapp=DEBUG, CONSOLE
      log4j.logger.grails.app.taglib.com.myapp=DEBUG, CONSOLE
      log4j.logger.grails.app.services.com.myapp=DEBUG, CONSOLE
      log4j.logger.grails.app.controllers.com.myapp=DEBUG, CONSOLE
      log4j.logger.grails.app.domain.com.myapp=DEBUG, CONSOLE
      

      如果 Grails 应用程序有其他类型的工件需要在 DEBUG 级别记录,则应该为每个工件配置一个额外的记录器。

      【讨论】:

        猜你喜欢
        • 2019-08-24
        • 1970-01-01
        • 1970-01-01
        • 2013-03-25
        • 1970-01-01
        • 1970-01-01
        • 2018-08-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多