Logstash-logback-encoder:在消息中使用不带格式的 StructuredArguments?
Logstash-logback-encoder: Using StructuredArguments without formatting in the message?
我想知道在使用 logstash-logback-encoder 以 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 在这一行发出警告:
more arguments provided (1) than placeholders specified (0)
我怎样才能避免这种情况?当然,我可以使警告静音并为它们添加例外,但我想知道这是否是最佳做法。
如果您不想在日志消息中包含数据,并希望避免静态分析警告,请使用 Markers
而不是 StructuredArguments
:
import net.logstash.logback.marker.Markers;
log.info(Markers.append("hits", result.getHits()), "Query executed successfully!");
有关详细信息,请参阅 here。
我想知道在使用 logstash-logback-encoder 以 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 在这一行发出警告:
more arguments provided (1) than placeholders specified (0)
我怎样才能避免这种情况?当然,我可以使警告静音并为它们添加例外,但我想知道这是否是最佳做法。
如果您不想在日志消息中包含数据,并希望避免静态分析警告,请使用 Markers
而不是 StructuredArguments
:
import net.logstash.logback.marker.Markers;
log.info(Markers.append("hits", result.getHits()), "Query executed successfully!");
有关详细信息,请参阅 here。