Grails 日志记录 - 只记录我的应用程序,不记录 Grails 特定的垃圾

标签 grails logging log4j

从默认日志记录配置开始,我添加了 root{} block 以打开调试级别日志记录。我为我的 Controller 添加了一个方法...

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.web.mapping.filter', // URL mapping
      'org.codehaus.groovy.grails.web.mapping', // URL mapping
      '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'

  warn 'org.mortbay.log'
  debug 'grails.app.controller'

  root {
    debug()
  }
}

现在我可以正常调试了。但我从各地得到它。 Grails 在执行运行应用程序、清除缓存、加载 spring bean 等时经历的所有启动垃圾。我想对此进行配置,以便我获得的唯一日志记录来自我的代码。这可能吗?

最佳答案

在 Config.groovy 文件的 log4j 部分中,定义一个日志附加程序,如下所示:

 appender name: "appLog",
        new org.apache.log4j.DailyRollingFileAppender(
        threshold: org.apache.log4j.Level.INFO,
        datePattern: "'.'yyyy-MM-dd", 
        file: "${logDirectory}/app.log", 
        layout: pattern(conversionPattern: '[%d{yyyy-MM-dd hh:mm:ss.SSS}] %p %c{5} %m%n'))

让root logger为root,并登录控制台:

root {
  additivity = true
  info stdout
}

然后仅将调试添加到特定记录器中的应用程序

debug additivity:true, appLog: "grails.app"

chalice Logging Section已经发生了很大变化,但现在几乎是最新的。

关于Grails 日志记录 - 只记录我的应用程序,不记录 Grails 特定的垃圾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6919788/

相关文章:

grails - 如何在不使用 UI 的情况下自动执行 Java 应用程序测试?

.net - 如何写入 Windows 事件查看器应用程序 channel ? (。网)

angularjs - 为什么 $log 总是被 angular-mocks 静音?

java - 无法将 Log4J 中的事件获取到 Flume 中

java - Log4j 无法将文件写入 jetty 日志目录

grails - 使用read()获取域后,即使在显式save()之后,域也不会持久存在

multithreading - GORM实例对象线程安全

grails - 如何在 IntelliJ IDEA Community Edition 9.0 BETA 中启用 Grails 支持?

c++ - 日志记录,如何获得命令结束?

java - Log4j2:没有可用的 log4j-web 模块