gpt4 book ai didi

java - 使用 SLF4J 时日志消息的 ID

转载 作者:行者123 更新时间:2023-11-29 08:56:38 26 4
gpt4 key购买 nike

我想为日志语句添加一个唯一标识符,这样我就可以为每个日志语句添加文档(外部,例如 wiki),这样用户就可以使用该 ID 快速访问与消息相关的文档。我想使用的日志记录框架是 SLF4J/logback。

除了与审计框架有关的一些内容外,我无法找到有关相关方法的文档。

有一个标记概念,我认为它可用于 ID 注入(inject),或者我可以将 ID 添加到消息文本本身。

如何“以正确的方式”将 ID 添加到日志记录语句?有没有我没有想到的可能性?

编辑

术语唯一 ID 只是说明应该是每个日志语句的标识符。开发人员,例如手动将这样的 ID 添加到表/枚举/任何内容,这可能是错误的。这样的 ID 必须是稳定的,因此文档可以基于它。所以 ID 本身并不是我想知道的。

我的问题是:将 ID 与消息文本一起推送到记录器的正确方法是什么?标记是否适合这种要求,我应该将 ID 嵌入到消息文本中还是有其他一些可能性?

所以,基本上,我会使用

logger.info(IDMarkers.DB_CONNECTION_FAILED, "no connection to the database");

或者只是

logger.info("[{}] no connection to the database", LogIDs.DB_CONNECTION_FAILED);

第一种方法的优点是显示 ID 取决于日志系统/它的配置。

最佳答案

Slf4j 有 http://www.slf4j.org/apidocs/org/slf4j/Marker.html

不幸的是,Marker 被宣传用于不同的目的。您仍然可以使用它们来唯一标记日志记录语句。

比较麻烦的方案是MDC:

MDC.put("MsgId", "EV-1234");
log.info()
MDC.remove("MsgId");

或使用结构日志记录(需要 v2.0.0):

logger.atDebug()
.addKeyValue("MsgId", "EV-1234")
.log("Temperature changed.");

关于java - 使用 SLF4J 时日志消息的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20006577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com