2011-01-18 44 views
2

我一直非常沮喪。Grails log4J在linux上的日誌記錄問題

我努力做到以下幾點:在application.log

  • 日誌中的所有應用程序相關的日誌是INFO或以上
  • 理解什麼控制着catalina.out中
  • 配置
  • 僅記錄WARN到catalina.out

我在ubuntu上運行我的服務器,我有tomcat的默認配置,它包含一個帶有logging.properties的conf目錄。我將這個文件重命名爲l.p,所以它不會發生衝突。 (不知道這是一個好主意)

在我的配置文件,我有:

def catalinaBase = System.properties.getProperty('catalina.base') 
if (!catalinaBase) catalinaBase = '.' // just in case 
def logDirectory = "${catalinaBase}${File.separator}logs" 
println "Log Directory: ${logDirectory}" 

log4j = { 

    appenders { 
    rollingFile name: 'applog', file: "${logDirectory}${File.separator}application.log", layout: pattern(conversionPattern: '%d{dd-MM-yyyy HH:mm:ss,SSS} %5p %c{1} - %m%n'), maxFileSize: 1024 
    } 

    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' 
    root { 
    info 'applog' 
    } 

} 

其結果是,我得到三個日誌:

catalina.2011-01-17.log catalina.out localhost.2011-01-17.log 

catalina.out的具有以下輸出:

Log Directory: /var/lib/tomcat6/logs 
log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.PropertyUtils). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 
log4j:ERROR WARNING: Exception occured configuring log4j logging: Cannot invoke org.apache.log4j.FileAppender.setFile - argument type mismatch 

我在日誌文件目錄中看不到application.log。任何幫助,將不勝感激我對此感到非常沮喪。

還有一兩件事,在Windows一切出來到控制檯,並在.grails\1.3.5\projects\<appnmae>\tomcat目錄

回答

4

你的問題很明顯,有一個類型不匹配創建application.log。具體來說,當你給它一個GString時,log4j期待一個String。嘗試更換:

"${logDirectory}${File.separator}application.log" 

有了這個:

"${logDirectory}${File.separator}application.log".toString() 

編輯:請閱讀this BUG

+0

我有兩個問題:1)我需要一個toString()2)改變logging.properties到lp WASN夠了。我需要將其移出conf目錄。謝謝@Mike Axiak – Tihom

+0

Mike(和Thom),我已經用Grails 1.3.7測試過了,並且它沒有顯式的'.toString()'調用就可以正常工作。因此我解決了這個錯誤。 –