【发布时间】:2021-08-21 12:46:18
【问题描述】:
简介
我们在几个 Spring (Boot) 应用程序中结合使用 SLF4J 和 Logback,最近开始使用 logstash-logback-encoder 来实现结构化日志记录。由于我们还必须支持纯文本日志,我们想知道是否可以将参数自动附加到日志消息中,而无需使用 {} 标记手动将它们添加到消息中。
所需行为示例
为了说明所需的行为,这是我们希望的:
log.info("My message", kv("arg1", "firstArgument"), kv("arg2", "secondArgument"))
产生以下所需的输出,其中参数自动附加在消息末尾的括号中:
My message (arg1="firstArgument", arg2="secondArgument")
或者另一个在消息中包含显式参数并在末尾包含参数的示例:
log.info("Status changed: {} => {}", v("from", "READY"), v("to", "UNAVAILABLE"), kv("service", "database"))
产生以下所需的输出:
Status changed: READY => UNAVAILABLE (from="READY", to="UNAVAILABLE", service="database")
问题
这可以通过 SLF4J/Logback 实现吗?如果没有,您是否知道其他日志框架或实现此目的的方法(在 Java 中)?
【问题讨论】:
-
我认为这不可能直接使用 SLF4J 和/或 Logback,但您可以轻松编写自己的日志记录实用程序方法来满足您的需求。
标签: java logging logback slf4j logstash-logback-encoder