Logback 1.3.5忽略InternetItem ElasticsearchAppender属性问题咨询
问题分析与解决方案
这不是缺陷,是logback-elasticsearch-appender为兼容Logback 1.3+版本做的配置方式变更。
原因
Logback 1.3+对Joran配置解析器的保留元素做了严格校验,<property>是Logback原生用于定义上下文属性的保留标签,自定义Appender的配置中再使用该标签会被Joran直接识别为原生配置,而非传递给ElasticsearchAppender处理,因此触发结构无效的报错。
解决方法
logback-elasticsearch-appender 1.3.x版本已将自定义属性的标签从<property>改为<field>,只需将配置中的所有<property>替换为<field>即可,配置结构完全不变:
<appender name="ELASTIC" class="com.internetitem.logback.elasticsearch.ElasticsearchAppender"> <url>http://yourserver/_bulk</url> <index>logs-%date{yyyy-MM-dd}</index> <type>tester</type> <!-- 省略其他配置 --> <properties> <field> <name>host</name> <value>${HOSTNAME}</value> <allowEmpty>false</allowEmpty> </field> <field> <name>severity</name> <value>%level</value> </field> <field> <name>thread</name> <value>%thread</value> </field> <field> <name>stacktrace</name> <value>%ex</value> </field> <field> <name>logger</name> <value>%logger</value> </field> </properties> <!-- 省略其他配置 --> </appender>
替换后,Joran会将<field>元素正确传递给ElasticsearchAppender的属性处理逻辑,不会再触发保留元素冲突的报错。
内容的提问来源于stack exchange,提问作者Blessed Geek
相关产品推荐
相关产品推荐

