gpt4 book ai didi

java - 将数据库中的值添加到 logback 日志消息

转载 作者:行者123 更新时间:2023-12-02 08:49:41 36 4
gpt4 key购买 nike

我有一个 Spring Boot 应用程序,它使用 logback 作为应用程序日志。现在我添加了对 logz.io 的支持,以将多台机器的日志集中到一处。问题是我无法知道哪个日志来自哪台机器。

在应用程序数据库中,我有一个唯一的 token ,该 token 对于运行应用程序的每台计算机都是唯一的。我的想法是将该 token 值预先附加到每个日志消息中,以便我可以区分哪个客户端正在发送哪个日志。

我可以通过存储库中扩展 JpaRepository 的方法访问 token 值。Logback配置是通过logback.xml完成​​的

编辑:每个客户端都使用自己的 H2 数据库来存储值。

我当前收到的消息示例:

2020-03-26 07:58:13,702 [scheduling-1] INFO n.g.service.ScheduledBotService - 测试消息

成为:

UniqueToken123 2020-03-26 07:58:13,702 [scheduling-1] INFO n.g.service.ScheduledBotService - 测试消息

最佳答案

我尝试log4j2中的线程上下文,它似乎对我有用。

测试代码

public class AppTest {

private Logger logger = LogManager.getLogger(AppTest.class);

@Test
public void testMaxFromIntegerList(){

String uniqueToken = getTokenFromJpa();

ThreadContext.put("uniqueToken", uniqueToken);
logger.info("Message Set uniqueToken");

//remove after using
ThreadContext.remove("uniqueToken");
logger.info("Message Clear uniqueToken");
}

// dummy code.
private String getTokenFromJpa() {
return "UniqueToken123";
}

}

Log4j2 配置。
请注意,在您的 PatternLayout 中,使用 %X{key} 包含指定的键。

appender.rolling.layout.pattern = %X{uniqueToken} %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

日志文件中的内容。

UniqueToken123 2020-03-26 18:18:56 INFO  AppTest:30 - Message Set uniqueToken
2020-03-26 18:18:56 INFO AppTest:33 - Message Clear uniqueToken

您可以从 here 获取有关线程上下文的更多信息。

希望对您有所帮助。

关于java - 将数据库中的值添加到 logback 日志消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60862492/

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