我正在尝试在JBoss EAP上部署grails应用程序,问题是除了stdout和stderr之外没有记录我的应用程序的输出。 我真的不明白在这种情况下日志记录是如何工作的,因为jboss使用了一些内部日志记录系统,而grails使用了log4j。
这是我在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 :(得分:2)
org.jboss.as.logging.per-deployment环境变量,AKA主机属性,AKA环境属性告诉JBoss要使用哪个日志记录配置。将其设置为true会告诉JBoss在正在部署的应用程序中使用日志记录配置。我不知道如何在Grails Config.groovy中设置它。在将host属性设置为false后,我在JBoss中执行配置。 False意味着使用JBoss中的日志配置。
在JBoss中将属性设置为false,然后只创建一个grails.app类别并让它登录到文件Handler。这适用于Grails和EAP 6.0在域模式下运行。