首页 > 解决方案 > 如何使用 jbpm/wildfly 中的元数据字段以 jsonformat 打印日志?

问题描述

我使用的是 jbpm 7.37 标准版,带有 WildFly Full 14.0.1.Final(WildFly Core 6.0.2.Final)。我正在使用记录器类(org.slf4j.LoggerFactory,org.slf4j.Logger)来打印日志。我已启用自定义 REST 端点。我正在使用 Jersey REST api。我正在制作自定义 jar 文件,其中我编写了自定义代码(自定义 REST API)并将这个 jar 文件部署在 kie-server.war 文件中。我想为我的自定义类打印 json 格式的日志。如下所示:

{"timestamp":"2021-03-04T05:27:07.063Z",
"service":"demo",
"level":"error/info",
"message":"Errormessage/Info message",
"metadata":{"requestId":"somerequestid","sessionId":"somesif"}
}

但是我可以使用以下命令以 json 格式打印日志:

sudo bash jboss-cli.sh -c "/subsystem=logging/json-formatter=json:com.demo.add(exception-output-type=formatted, pretty-print=true, meta-data={service=demo})"

但这给了我如下输出:

{"timestamp":"2021-03-04T05:27:07.063Z",
"service":"demo",
"level":"error/info",
"message":"Errormessage/Info message",
}

无法打印“元数据”:{“requestId”:“somerequestid”,“sessionId”:“somesrequestid”}

字段 requestId 和 sessionId 具有我必须从 http 请求中获取的运行时值。来自 @HeaderParam("requestId"),@HeaderParam("sessionId") 并且需要附加每个响应。

当我在我的回复中附加这些值时,它会显示在“消息”字段中,如下所示。

{"timestamp":"2021-03-04T05:27:07.063Z",
"service":"demo",
"level":"error/info",
"message":"data{"requestId":"somerequestId","sessionId":"somesessionId"}",
}

如何将每个请求的 requestId 和 sessionId 的值打印为 "metadata":{"requestId":"somerequestid","sessionId":"somesid"} ?

标签: javaloggingwildflyjbpm

解决方案


推荐阅读