2012-09-28 82 views
0

這是我當前的log4j配置。問題在於開發的具體部分。使用不同appender的Grails日誌記錄配置

log4j = { 
    appenders { 
     console name:'stdout', 
       threshold: org.apache.log4j.Level.ERROR 

     rollingFile name: "appenderAccessLog", 
...      
     rollingFile name: "appenderAppLog", 
    ...    

     environments { 
      development{ 
       rollingFile name: "appenderDebugLog", 
        threshold: org.apache.log4j.Level.DEBUG, 
        .... 
      } 
     } 

    } 


    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' 



    environments { 
     production { 
      // Override previous setting for 'grails.app.controller' 
      root { 
       error 'appenderAppLog','stdout' 
       additivity = false 
      } 

     }    
        debug additivity: false, stdout :['mycompany', 
        'mycompany.security', 
        'mycompany.common', 
        'grails.app.services.mycompany.services'] 

      debug additivity: false, appenderDebugLog :['mycompany', 
       'mycompany.security', 
       'mycompany.common', 
       'grails.app.services.mycompany.services'] 

      root { 
       error 'appenderAppLog','stdout' 
       additivity = true 
      } 

現在你上面看到特定的包重定向到的appender 2個調試語句。 現在,如果我想使用包XXX調試,併發送給appender A和B,我不得不使用上面的定義 - 它重複調試appender1:XXX和調試appender2:XXX包。

我查了Grails的日誌 - 理想情況下,下面應該努力解決的額外的調試/ appender的語句: 錯誤org.springframework

    debug mycompany.packagenames... 

     root { 
      error 'appenderAppLog','stdout' 
          debug 'appenderDebugLog', 'stdout' 
      additivity = true 
     } 

但是當我這樣做,實際發生的是中列出的所有軟件包錯誤類別 - 開始將調試消息發送到appenderDebugLog文件。如果在頂層定義每個級別時明確聲明瞭不同的包,爲什麼Root appender中的調試配置會產生此問題?

請指導。

回答

0

不確定是否屬於這種情況,但可能將所有包裝規格移動到appendersroot部分將有所幫助。 同時指定stdouterrordebug之內的根看起來多餘。

還有一個選項可以指定appender特定的定義(例如http://snipplr.com/view/63391/grails-log4j-for-different-environments--an-example/)用於細粒度配置。

+0

嘗試移動appenders和root下的所有包 - 並且仍然觀察到相同的行爲。接下來會嘗試鏈接。 – Anna