JBOSS EAP 7.2封装STDOUT和STDERR消息



这个问题以前被问过几次,有一些答案,但都不适合我的要求,因为答案指向控制台appender或文件appender。

这两个附加程序的格式化程序配置都是通过独立或域xml.进行配置驱动的。但是,我使用的是json /logstash formatter

我的问题是,发送到stdoutstderr的消息由Redhat jboss eap包装,日志级别为INFO(无论其级别如何(,堆栈的每一行都被视为单独的JSON块

正因为如此,logstash将所有消息解释为INFO,而不是警告或错误,而且它看起来非常丑陋,很难在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控制台appender发送的日志?至少将stacktrace合并为一个json块?

请注意,应用程序使用logback。我知道logback有json格式器,我可以使用,但我无能为力,因为该应用程序是用java开发的cots产品,使用的是3pp jar,既没有更新为使用json格式程序,也不允许覆盖war。

所以,如果有什么事情要做,就必须在服务器端完成。

感谢您的帮助。

尝试在日志子元素下的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>

最新更新