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

Grails日志-只记录我的应用程序,而不是特定于Grails的垃圾,grails,logging,log4j,Grails,Logging,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.c

从默认日志记录配置开始,我添加了根{}块以打开调试级日志记录。我为我的控制器添加了一个方法

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在运行应用程序、清除缓存、加载SpringBean等过程中遇到的所有启动垃圾。我想对其进行配置,以便我得到的唯一日志记录来自我的代码。这可能吗?

在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"

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

非常好,谢谢。虽然我不确定这在文档中是否足够透明。我读了一整天谢谢你的回答。