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 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏