spring+mybatis+slf4j+logback, service内调用dao查询前后各一条日志,trace丢失

前一条日志还有traceId, 后一条就没有了
是 mybatis 对 dao 层查询使用了线程池,导致当前mdc中的traceId丢失了吗?

public List<UserInfo> queryUserInfos(UserInfoQuery query) {
    logger.info("queryUserInfos1, query: {}", JsonUtils.toJson(query));
    List<UserInfo> userInfos = userDao.queryUserInfos(query);
    logger.info("queryUserInfos2, query: {}", JsonUtils.toJson(query));
    return userInfos;
}

queryUserInfos1 日志携带了mdc的traceId
queryUserInfos2 日志丢失了

阅读 1k
1 个回答

需要有更多的代码来判断问题。

当前能判断的是queryUserInfos的执行肯定是一个线程在执行,至于mybatis 对 dao 层查询使用了线程池这个如果影响,也只会影响userDao.queryUserInfos这个函数里面的日志打印,并不会影响queryUserInfos2


本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
宣传栏