2013-02-26 54 views
2

我想在JBoss EAP上部署一個grails應用程序,問題是除了stdout和stderr,我的應用程序沒有輸出記錄。 因爲jboss使用了一些內部日誌系統,grails使用了log4j,所以我真的不明白這種情況下的日誌記錄是如何工作的。Grails和JBoss AS/EAP日誌記錄沒有被打印

這是standalone.xml我的日誌記錄配置:

<subsystem xmlns="urn:jboss:domain:logging:1.1"> 
     <console-handler name="CONSOLE"> 
      <level name="INFO"/> 
      <formatter> 
       <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> 
      </formatter> 
     </console-handler> 
     <periodic-rotating-file-handler name="FILE"> 
      <formatter> 
       <pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/> 
      </formatter> 
      <file relative-to="jboss.server.log.dir" path="server.log"/> 
      <suffix value=".yyyy-MM-dd"/> 
      <append value="true"/> 
     </periodic-rotating-file-handler> 
     <logger category="com.arjuna"> 
      <level name="WARN"/> 
     </logger> 
     <logger category="org.apache.tomcat.util.modeler"> 
      <level name="WARN"/> 
     </logger> 
     <logger category="sun.rmi"> 
      <level name="WARN"/> 
     </logger> 
     <logger category="jacorb"> 
      <level name="WARN"/> 
     </logger> 
     <logger category="jacorb.config"> 
      <level name="ERROR"/> 
     </logger> 
     <root-logger> 
      <level name="INFO"/> 
      <handlers> 
       <handler name="CONSOLE"/> 
       <handler name="FILE"/> 
      </handlers> 
     </root-logger> 
    </subsystem> 

這是默認的。

這log4j的配置是在我的Config.groovy:

// log4j configuration 
log4j = { 
    // Example of changing the log pattern for the default console appender: 
    // 
    //appenders { 
    // console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n') 
    //} 

    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' 

    all additivity: false, console: [ 
      'grails.app.controllers.com.redhat.theses', 
      'grails.app.domain.your.com.redhat.theses', 
      'grails.app.services.com.redhat.theses', 
      'grails.app.taglib.com.redhat.theses', 
      'grails.app.conf.com.redhat.theses', 
      'grails.app.filters.com.redhat.theses' 
    ] 
} 

我真的不明白這個記錄的東西,它是如此混亂,我要的是記錄至少所有的錯誤,對於初學者。人們會認爲這樣一個重要的功能默認工作。

如果我設置此屬性的JBoss啓動時:

./standalone.sh -Dorg.jboss.as.logging.per-deployment=false 

它的工作原理正是我想要的。但是,它是否正確?爲什麼我必須設置這個屬性才能獲得如日誌那樣重要的功能呢?

非常感謝你的幫助,如果我聽起來有點傲慢,我很抱歉,我一直在試圖弄清楚這個問題好幾個小時,而我仍然處在一開始就是在哪裏。

+0

JBoss EAP版本肯定會有幫助。此外,你可能會發現這個答案相關:http://stackoverflow.com/questions/12670415/log4j-doesnt-log-anything-under-jboss-6-eap。 – 2013-02-27 14:27:10

+0

JBoss EAP 6.0.0。抱歉沒有馬上提及它。我會盡快看看這個問題,謝謝! – VaclavDedik 2013-02-27 18:15:33

回答

2

org.jboss.as.logging.per-deployment環境變量,AKA主機屬性,AKA環境屬性告訴JBoss要使用哪個日誌記錄配置。將它設置爲true可以告訴JBoss在正在部署的應用程序中使用日誌配置。我不知道如何在Grails Config.groovy中設置它。將該主機屬性設置爲false後,我在JBoss中執行配置。 False意味着在JBoss中使用日誌配置。

在JBoss中,將屬性設置爲false,然後創建一個grails.app類別並將其記錄到文件處理程序。這對Grails和EAP 6.0在域模式下運行適用。