首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数据库添加值到logback日志消息

从数据库添加值到logback日志消息
EN

Stack Overflow用户
提问于 2020-03-26 07:18:11
回答 1查看 146关注 0票数 0

我有一个Spring应用程序,它使用logback作为应用程序日志。现在,我增加了对logz.io的支持,将日志从多台机器集中到一个地方。问题是我不知道哪个日志是从哪台机器来的。

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

我可以通过扩展JpaRepository的存储库中的方法访问令牌值。登录配置是通过logback.xml完成的

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

我现在有一条消息的示例:

2020-03-26 07:58:13,702 [scheduling-1] INFO n.g.service.ScheduledBotService - Test message

将是:

UniqueToken123 2020-03-26 07:58:13,702 [scheduling-1] INFO n.g.service.ScheduledBotService - Test message

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-26 09:22:42

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

测试代码

代码语言:javascript
复制
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 Config.

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

代码语言:javascript
复制
appender.rolling.layout.pattern = %X{uniqueToken} %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

logFile中的内容。

代码语言:javascript
复制
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

您可以从这里获得更多关于线程上下文的信息。

希望能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60862492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档