[英]How to configure JBoss AS 7/EAP 6 to log in JSON format?
我将如何配置 JBoss 日志系统以使用自定义 log4j 布局(如log4j-json)或自定义 JUL 格式化程序(如logstash-util-formatter) ?
编辑:看起来自定义格式化程序在 WildFly 8 中可用,并且它们将出现在 EAP 6.3中。
同时,我想我有这些选项涉及绕过 JBoss 日志记录:
jboss-deployment-structure.xml
来阻止 EAP 的日志库,并使用像 logback这样的 JSON 编码器。无论哪种方式,我都只会获得部署本身的 JSON 日志记录,而不是数据源和容器启动的日志记录。 是否有另一个选项允许所有日志记录采用 JSON 格式?
另一种方法是使用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>
这在JBoss AS 7.x或JBoss EAP 6.2中是不可能的。 正如你所说的,它可以在WildFly 8.0.0.Final中作为custom-formatter
,并将在JBoss EAP 6.3中提供。
实际上它是可能的,但是你无法对日志记录配置进行运行时更改。 您可以删除日志记录子系统并纯粹使用logging.properties配置。 除非你迫切需要使用格式化程序并且不能等待EAP 6.3或使用WildFly,否则我可能不会建议。
为 Red Hat JBoss Enterprise Application Platform (EAP) 6.4 7.x配置 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
目录中。
替代解决方案是从类路径中排除 JBoss logmanager 并使用您想要的任何现代工具,请参阅我的回答: Logback 和 Jboss 7 - 不一起工作?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.