2011-01-19 106 views
1

我試圖阻止應用程序日誌消息也出去到STDOUT也。Log4J日誌消息正在記錄到應用程序日誌和stdout for grails應用程序

我有記錄如下配置:

log4j = { 

    appenders { 
    rollingFile name: 'applog', file: "${System.properties.getProperty('catalina.base')}${File.separator}logs${File.separator}application.log".toString(), layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p%c{1} - %m%n'), maxFileSize: '1MB' 
    file name: 'stacktrace', file: "${System.properties.getProperty('catalina.base')}${File.separator}logs${File.separator}stacktrace.out".toString(), layout: pattern(conversionPattern: '%c{2} %m%n') 
    console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n') 
    } 

    error stacktrace: "StackTrace" 

    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' 
    info 'grails.app' 

    root { 
    info applog 
    error 'stdout' 
    additivity=false 
    } 
} 

被輸出在我的應用程序文件中的記錄都很好。問題是catalina.out重複每行。我不希望catalina.out增長太多。我只想在catalina.out中只有WARN和以上。我該怎麼做呢?

更新:我更新了上述問題。之前我曾表示這些消息在卡塔利納州記錄了兩次。我想出瞭如何解決這個問題。但是,它仍會記錄一次我不想要的信息。我只需要WARN消息。

更新2:我想我知道這個問題,但我不知道如何解決它。 catalina.out日誌文件沒有通過上面的配置進行配置。在默認的catalina.sh啓動腳本中,所有標準輸出都寫入catalina.out文件。所以我正在寫入appLog的日誌消息也被寫入stdout。所以真正的問題是,基於上述配置文件,爲什麼我的appLog的內容也被輸出到stdout

回答

1

自我提醒:RTFM !!!!

我讀的是Grails日誌記錄文檔的錯誤版本。最新版本是here,記錄解釋得很好。我的需求也稍有改變。所有錯誤(及以上)都記錄在catalina.out(aka stdout)中。我的appLog正確記錄INFO中的所有內容。

如果我想記錄所有警告消息catalina.out中,我添加以下內容:

root{ 
    warn() 
} 

下將刪除所有的stdout我的應用程序日誌:

log4j = { 
    appenders { 
    rollingFile name: 'applog', file: ${System.properties.getProperty('catalina.base')}${File.separator}logs${File.separator}application.log".toString(), layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{1} - %m%n'), maxFileSize: '10MB' 
    console name: 'stdout', layout:pattern(conversionPattern: '%c{2} %m%n'), threshold: org.apache.log4j.Level.WARN 
    } 
    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' 

    info applog: ['grails.app', 'myapp', 'com.myapp'] 
} 
0

我想我明白這是怎麼回事導通我沒有看到一個記錄配置爲您的位點我確實看到了附加器我想你指的是警告及以上,但你需要配置一個具有所需級別的記錄器來使用它。見here

舉例來說,如果你的網站是mysite.some.packages,您可以創建一個記錄器,帶有水平記錄所有消息> =警告站點到rollingfile:

warn rollingFile: "mysite" 
+0

我把更多的信息在問題上 – Tihom 2011-01-24 18:16:01

相關問題