JBOSS EAP 7.2包装STDOUT和STDERR消息

时间:2020-02-19 14:50:08

标签: java jboss jboss7.x jboss-eap-7 jboss-logging

这个问题已经问过几次了,虽然有一些答案,但是都不适合我的要求,因为答案是针对控制台附加程序还是文件附加程序的。

这两个追加程序的

格式化程序配置是通过独立或域xml.驱动的配置,但是,我使用的是json /logstash formatter

我的问题是,发送到stdoutstderr的消息被Redhat jboss eap包装,日志级别为INFO(与级别无关),并且堆栈跟踪的每一行被视为单独的JSON块。

由于此logstash会将所有消息解释为INFO而不是警告或错误,因此在基巴纳语中看起来非常难看且难以解释。

jboss服务器日志的片段。

{
    "timestamp": "2020-02-19T13:19:18.743Z",
    "sequence": 249,
    "loggerClassName": "org.jboss.logmanager.Logger",
    "loggerName": "**stdout**",
    "level": "**INFO**",
    "message": "2020-02-19T14:19:18.000743+0100 [DBQueue_3] **ERROR** **com.uuapp.data** - Invalid operation name in participant message \"Pmsg:Id=0,Sender=0,Consumer=0,ActIndex=0,Oper=null,Flag=0, Priority=8\"",
    "threadName": "DBQueue_3",
    "threadId": 530,
    "mdc": {
    },
    "ndc": "",
    "hostName": "uu-app-18934",
    "processName": "jboss-modules.jar",
    "processId": 22061
}

有没有办法解决这个烦人的功能,并使jboss照原样使用从logback控制台附加程序发送的日志? Atleast将stacktrace组合到一个json块中?

请注意,该应用程序使用logback。我知道logback有我可以使用的json格式化程序,但是我的双手被束缚了,因为该应用程序是用Java开发的一种婴儿床产品,并且使用了3pp jar,它们既未更新为使用json格式化程序,也不允许其覆盖战争。

因此,如果有事情要做,必须在服务器端完成。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

尝试在日志子干下的 Jboss 服务器的 standalone.xml 中添加以下代码。发生这种情况是因为 log4j2.xml 消息是由 Jboss 自己的模式包装的。

 <subsystem xmlns="urn:jboss:domain:logging:8.0">
 ....
    <console-handler name="stdout-console" autoflush="true">
        <level name="ALL"/>
        <formatter>
            <pattern-formatter pattern="%s%n"/>
        </formatter>
    </console-handler>
    <logger category="stdout" use-parent-handlers="false">
        <handlers>
            <handler name="stdout-console"/>
        </handlers>
    </logger>
....
</substem>
相关问题