Spring Boot配置logback输出spring-data-elasticsearch查询日志失败如何解决
问题解决方案
一、Spring Data Elasticsearch查询日志不输出的解决办法
你的配置失效主要是以下两个原因,对应修正即可:
- logger命名规则错误:logback的logger名称不支持末尾通配符
*,你配置的org.springframework.data.elasticsearch.core.*是无效写法,直接去掉末尾的*,写为org.springframework.data.elasticsearch.core即可匹配该包及所有子包下的日志。 - 不同版本ES客户端的日志包路径不一致:
- Spring Boot 2.x对应的旧版Spring Data Elasticsearch,WIRE日志路径为
org.springframework.data.elasticsearch.client.WIRE - Spring Boot 3.x对应的新版Spring Data Elasticsearch(底层使用ELC客户端),WIRE日志路径变为
org.springframework.data.elasticsearch.client.elc.WIRE
- Spring Boot 2.x对应的旧版Spring Data Elasticsearch,WIRE日志路径为
你可以直接使用以下修正后的logger配置,覆盖所有版本场景:
<!-- 旧版ES客户端WIRE日志(打印完整请求响应报文) --> <logger name="org.springframework.data.elasticsearch.client.WIRE" level="trace" additivity="false"> <appender-ref ref="databaseLog" /> <appender-ref ref="console" /> </logger> <!-- 新版ELC客户端WIRE日志 --> <logger name="org.springframework.data.elasticsearch.client.elc.WIRE" level="trace" additivity="false"> <appender-ref ref="databaseLog" /> <appender-ref ref="console" /> </logger> <!-- Spring Data Elasticsearch核心操作日志 --> <logger name="org.springframework.data.elasticsearch.core" level="debug" additivity="false"> <appender-ref ref="databaseLog" /> <appender-ref ref="console" /> </logger> <!-- 兜底:底层ES官方客户端日志 --> <logger name="org.elasticsearch.client" level="debug" additivity="false"> <appender-ref ref="databaseLog" /> <appender-ref ref="console" /> </logger>
如果配置后还是没有日志,可临时将root日志级别调整为debug,确认控制台是否有ES相关日志输出,排除日志本身未生成的问题。
二、同一appender多logger引用的问题说明
同一个log-appender被多个不同包路径的logger引用不会产生任何问题。logback的appender默认是线程安全的,多个logger绑定同一个appender时,日志会正常串行写入,不会出现文件冲突、日志丢失、重复写入的问题,你可以放心将多个业务包/框架包的日志输出到同一个appender对应的文件中。
内容的提问来源于stack exchange,提问作者user404
相关产品推荐
相关产品推荐

