Java 回写:通过<;双嵌套字段;nestedField>;
我在SpringBoot2和JDK11上运行了一个JavaWeb服务,它通过公共库中的模板文件使用Logback。我使用Java 回写:通过<;双嵌套字段;nestedField>;,java,spring-boot,logback,Java,Spring Boot,Logback,我在SpringBoot2和JDK11上运行了一个JavaWeb服务,它通过公共库中的模板文件使用Logback。我使用标记将一些默认的Logback属性放置在符合弹性公共模式的位置,以及由我的组织标准指定的其他位置。不幸的是,我在结果JSON中的多个级别嵌套属性时失败了。请允许我举例说明 公共库中的模板文件如下所示: 日志 记录器 水平 真的 { “这里有很多其他MDC字段:{…}” } 生成的JSON类似于: { "log": { "logger":
标记将一些默认的Logback属性放置在符合弹性公共模式的位置,以及由我的组织标准指定的其他位置。不幸的是,我在结果JSON中的多个级别嵌套属性时失败了。请允许我举例说明
公共库中的模板文件如下所示:
日志
记录器
水平
真的
{
“这里有很多其他MDC字段:{…}”
}
生成的JSON类似于:
{
"log": {
"logger": "...",
"level: "INFO"
},
"message": "...",
"lots-of-other-MDC-fields-here": {...}
}
但是,并非所有字段都只嵌套一个级别。在上面最外层的
标记中,我想添加以下内容:
额外的
关键词
堆栈散列
${STE_除外责任}
这应该呈现为:
{
"log": {
"logger": "...",
"level: "INFO"
},
"extra": {
"keywords": {
"stack_hash": "something here"
}
},
"message": "...",
"lots-of-other-MDC-fields-here": {...}
}
不幸的是,当我将
嵌套在另一个
下时,我没有做正确的事情,并且我没有找到任何关于如何正确完成这一工作的适用文档或示例。我正在寻找关于如何将示例中提供的配置呈现为上述输出的清晰示例
上述示例的实际输出为:
线程“main”java.lang.IllegalStateException中出现异常:检测到Logback配置错误:
ch.qos.logback.core.joran.spi中存在错误。Interpreter@67:40-没有适用于[stackHash]的操作,当前元素路径为[[configuration][appender][encoder][providers][nestedField][providers][nestedField][stackHash]]
ch.qos.logback.core.joran.spi中存在错误。Interpreter@69:45-没有适用于[排除]的操作,当前ElementPath为[[configuration][appender][encoder][providers][nestedField][providers][nestedField][stackHash][Exclutions]]
对于上下文,以下是我的服务如何使用部署的模板:
显然,上面的格式是有效的,logstash编码器中一定有错误。我一直无法精确定位该错误所在的位置,因为它自行解决了。目前正在使用logstash编码器6.2。如果有人更确切地知道是什么修复了这个bug,我会接受这个答案