JBOSS EAP 7.2封装STDOUT和STDERR消息

t3psigkw  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(197)

这个问题已经问过几次了,有一些答案,但没有一个适合我的要求,因为答案是针对控制台附加器或文件附加器。

格式化程序配置这两个附加器都是通过独立或域xml.驱动的配置。但是,我使用的是json /logstash formatter
我的问题是,发送到stdoutstderr的消息被Redhat jboss eap Package ,日志级别为INFO(与级别无关),并且堆栈跟踪的每一行都被视为单独的JSON块。

由于这个logstash解释所有的信息,而不是警告或错误,它看起来非常丑陋,很难在kibana解释。

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的控制台附加器发送的日志?至少把stacktrace合并到一个json块中?
请注意,该应用程序使用logback。我知道logback有json格式化程序,我可以使用,但我的手被束缚,因为该应用程序是一种cots产品开发的java和使用3pp jar,既没有更新使用json格式化程序,也不允许覆盖战争。
所以,如果有什么要做的,就必须在服务器端完成。
任何帮助都是感激不尽的。

gmxoilav

gmxoilav1#

尝试在日志子系统下的Jboss服务器的standalone.xml中添加以下代码。这是因为log4j2.xml消息是由Jboss自己的模式 Package 的。

<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>

相关问题