【问题标题】:Logstash-logback-encoder: Using StructuredArguments without formatting in the message?Logstash-logback-encoder:使用 StructuredArguments 而不在消息中格式化?
【发布时间】:2020-02-18 13:22:33
【问题描述】:

我想知道在使用 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 在这一行发出警告:

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

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

【问题讨论】:

    标签: logstash slf4j logstash-logback-encoder


    【解决方案1】:

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

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

    更多详情请见here

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 2020-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多