如何配置JBoss AS 7/EAP 6以JSON格式登录



如何配置JBoss日志系统以使用自定义log4j布局,如log4j-json或自定义的JUL格式化程序logstash-util-formatter吗?

编辑:它看起来像自定义格式化器可在WildFly 8它们是即将到来的EAP 6.3。

同时,我认为我有这些选项涉及绕过JBoss日志记录:

  1. 使用每个部署日志来自己配置log4j。
  2. 使用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?

相关内容

  • 没有找到相关文章

最新更新