这可能是一个愚蠢的问题,但我的 scala 知识有点缺乏。我正在尝试在 scala 中实现结构化日志记录,我们正在使用 slf4j/logback/logstash。我遇到了以下帖子:SLF4J 如何支持结构化日志记录其中描述了如何做到这一点:
import static net.logstash.logback.argument.StructuredArguments.*;
/*
* Add "name":"value" ONLY to the JSON output.
*
* Since there is no parameter for the argument,
* the formatted message will NOT contain the key/value.
*
* If this looks funny to you or to static analyzers,
* consider using Markers instead.
*/
logger.info("log message", keyValue("name", "value"));
显然这是java代码,而不是scala。我已经把它转换了,但我找不到 net.logstash.logback.argument.StructuredArguments.KeyValue。我猜这是因为它没有包含在构建中,但这是我绊倒的地方。
我正在使用 sbt,并且包含了我期望的包:
"net.logstash.logback" %% "logstash-logback-encoder" % VersionOf.`logstash`
但是 sbt 找不到那个包(版本是 1.2.1)。让我感到困惑的是,我们对 logback 的其他依赖项是从组 id 中提取的:ch.qos.logback。我真的不明白 ch.qos.logback 是什么以及为什么它与 net.logstash.logback 不同。
长话短说,我需要用 sbt 导入什么包,以便我可以使用 StructuredArguments/KeyValues 进行日志记录?