虽然配置log4j以将日志发送到远程主机(log4j: How to use SocketAppender?)似乎很容易,但我在JBoss'(7.1.1)standalone.xml上找不到任何相同的方法。
我找到了一种替换JBOss配置以严格使用自己的log4j(JBoss AS 7: Logging)的方法,但是日志级别的远程切换将会丢失 - 对于实时系统,这是不可取的。
答案 0 :(得分:1)
或者,您可以使用logstash-gelf将日志消息发送到logstash(使用GELF)。在自定义字段/ MDC数据方面,您更灵活。您需要一个额外的模块才能使其正常工作:http://search.maven.org/#artifactdetails%7Cbiz.paluch.logging%7Clogstash-gelf%7C1.3.2%7Cjar
<custom-handler name="GelfLogger" class="biz.paluch.logging.gelf.jboss7.JBoss7GelfLogHandler" module="biz.paluch.logging">
<level name="INFO"/>
<properties>
<property name="graylogHost" value="somehost"/>
<property name="extractStackTrace" value="true"/>
<property name="filterStackTrace" value="true"/>
<property name="mdcProfiling" value="true"/>
<property name="facility" value="JBoss Core"/>
<property name="additionalFields" value="Environment=AT"/>
<property name="mdcFields" value="Application,App.Version,remoteAddr,remoteUser,sessionId,requestUri,requestMethod,requestParams,Tracking.RootUser,Tracking.RootSessionId,Tracking.RootRequestId,WS.last.Request,WS.last.Response,WS.last.Endpoint"/>
</properties>
</custom-handler>
答案 1 :(得分:0)
如果更新到7.2是一个选项,你可以使用jboss中的syslog-handler作为7.2,我在生产中使用它,效果很好。 看看https://docs.jboss.org/author/display/AS72/Logging+Configuration
看起来像:
<syslog-handler name="SYSLOG">
<level name="INFO"/>
<hostname value="${jboss.bind.address}"/>
<app-name value="JbossAS7"/>
<server-address value="1.2.3.4"/>
</syslog-handler>
符合RFC-5424和RFC-3164,因为您可以在其中配置设施。