Logstash logback编码器:在消息中使用不带格式的StructuredArguments



当使用logstash logback编码器以JSON格式登录时,我想知道在日志调用中使用StructuredArguments的最佳实践是什么。

我想将一些结构化参数记录在单独的字段中,但我不想将这些参数格式化为文本字符串消息。

如果我这样写日志行,一切都会按照我的意愿进行,但我的IntelliJ IDEA和Sonarqube静态代码分析都考虑到了这个问题:

log.info("Query executed successfully!", StructuredArguments.value("hits", result.getHits()));
(or more concise)
log.info("Query executed successfully!", v("hits", result.getHits()));

IntelliJ在以下行警告:

提供的参数(1(多于指定的占位符(0(

如何避免这种情况?当然,我可以让警告静音,并为它们添加例外,但我想知道这是否是一种最佳做法。

如果您不想在日志消息中包含数据,并且希望避免静态分析警告,请使用Markers而不是StructuredArguments:

import net.logstash.logback.marker.Markers;
log.info(Markers.append("hits", result.getHits()), "Query executed successfully!");

请参阅此处了解更多详细信息。

相关内容

  • 没有找到相关文章

最新更新