如何配置JBoss日志系统以使用自定义log4j布局,如log4j-json或自定义的JUL格式化程序logstash-util-formatter吗?
编辑:它看起来像自定义格式化器可在WildFly 8它们是即将到来的EAP 6.3。
同时,我认为我有这些选项涉及绕过JBoss日志记录:
- 使用每个部署日志来自己配置log4j。
- 使用
jboss-deployment-structure.xml
来阻止EAP的日志库,并使用像logback这样的JSON编码器。
无论哪种方式,我只会得到部署本身的JSON日志,而不是数据源和容器启动。是否有另一个选项,将允许所有的日志在JSON格式?
这在JBoss AS 7中是不可能的。或JBoss EAP 6.2。正如你所说,虽然它在WildFly 8.0.0中可用。最终版本为custom-formatter
,将在JBoss EAP 6.3中提供。
实际上这是可能的,但是您将失去对日志配置进行运行时更改的能力。您可以删除日志子系统并纯粹使用日志。属性配置。我可能不建议这样做,除非你迫切需要使用格式化程序,不能等待EAP 6.3或使用WildFly。
另一种方法是使用logstash-gelf (https://github.com/mp911de/logstash-gelf),它为GELF提供了一个本地日志处理程序。
这样您就不需要等待JSON格式化程序,只需在您的logstash上配置一个GELF输入并获取记录器模块(http://search.maven.org/remotecontent?filepath=biz/paluch/logging/logstash-gelf/1.5.4/logstash-gelf-1.5.4-logging-module.zip)。适用于JBoss AS7 (EAP6)和WildFly。
JBoss配置代码段
<custom-handler name="GelfLogger" class="biz.paluch.logging.gelf.jboss7.JBoss7GelfLogHandler" module="biz.paluch.logging">
<level name="INFO" />
<properties>
<property name="host" value="udp:localhost" />
<property name="port" value="12201" />
<property name="includeFullMdc" value="true" />
</properties>
</custom-handler>
为Red Hat JBoss Enterprise Application Platform (EAP) 6.4配置JBoss EAP的JSON日志格式化程序:
<subsystem xmlns="urn:jboss:domain:logging:3.0">
<formatter name="JSONFMT">
<custom-formatter class="org.jboss.logmanager.formatters.JsonFormatter" module="org.jboss.logmanager.json-formatter"/>
</formatter>
<periodic-rotating-file-handler name="JSON" autoflush="true">
<formatter>
<named-formatter name="JSONFMT"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="xserver.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
<handler name="JSON"/>
</handlers>
</root-logger>
<formatter name="JSONFMT">
<custom-formatter class="org.jboss.logmanager.formatters.JsonFormatter" module="org.jboss.logmanager.json-formatter"/>
</formatter>
</subsystem>
JsonFormatter
实现了org.jboss.logmanager.ExtFormatter
,并作为模块安装到modules
目录中。
查看https://github.com/jboss-logging/jboss-logmanager/tree/main/ext/src/main/java/org/jboss/logmanager/ext/formatters获取灵感。
另一种解决方案是将JBoss logmanager从类路径中排除,并使用任何您想要的现代工具,参见我的答案:Logback和JBoss 7 - don't work together?