繁体   English   中英

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

[英]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 日志记录:

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

检查https://github.com/jboss-logging/jboss-logmanager/tree/main/ext/src/main/java/org/jboss/logmanager/ext/formatters以获得灵感。

替代解决方案是从类路径中排除 JBoss logmanager 并使用您想要的任何现代工具,请参阅我的回答: Logback 和 Jboss 7 - 不一起工作?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM