我想在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
它的工作原理正是我想要的。但是,它是否正確?爲什麼我必須設置這個屬性才能獲得如日誌那樣重要的功能呢?
非常感謝你的幫助,如果我聽起來有點傲慢,我很抱歉,我一直在試圖弄清楚這個問題好幾個小時,而我仍然處在一開始就是在哪裏。
JBoss EAP版本肯定會有幫助。此外,你可能會發現這個答案相關:http://stackoverflow.com/questions/12670415/log4j-doesnt-log-anything-under-jboss-6-eap。 – 2013-02-27 14:27:10
JBoss EAP 6.0.0。抱歉沒有馬上提及它。我會盡快看看這個問題,謝謝! – VaclavDedik 2013-02-27 18:15:33