日志问题困惑,如何保证一个很长方法的日志记录顺序

JAVA丶斌 2016-11-07 03:52:29
1、现在问题是这样的,比如我有A方法,里面记录日志,但是A方法执行完的时间需要15秒,还有一个B方法,B方法执行完的时间却是10秒,这样就导致了日志的顺序打乱问题,比如说2台机器前后查一秒的去请求A和B方法,A比B快一秒请求,我想要的日志信息是这样的:
1、A请求开始,参数
2、A调用第三方接口,请求参数
3、A请求结束
4、B请求开始,参数
5、B调用第三方接口,请求参数
6、B请求结束
但是实际可能是这样:
1、A请求开始,参数
2、B请求开始,参数
3、B调用第三方接口,请求参数
4、A调用第三方接口,请求参数
5、B请求结束
6、A请求结束
详细代码如下,求大神门有什么好的方案,感激不尽,刚用没多少分。

public void A(){
logger.error("A请求开始,参数:{}",p1);
....
...
logger.error("A调用第三方接口,请求参数:{},p2);//这里用了8
...
...
logger.error("A请求结束");
|


public void B(){
logger.error("B请求开始,参数:{}",p1);
....
...
logger.error("B调用第三方接口,请求参数:{},p2);//这里用了7
...
...
logger.error("B请求结束");
|
...全文
1072 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你可以为所有的 log 都产生全局唯一编号。例如使用“机器号+进程号+时间戳+随机值"组成的 id。 然后,每一个 log,除了记录自己的 id 以外,还记录“前一个id”。仅此而已! 最后就是你的日志分析系统的事情,做很小的修改,从界面设计着手,就能把任务调用的堆栈打印出来。
顾小林 2016-11-09
  • 打赏
  • 举报
回复
如果是为了追踪,可以在访问过程中 添加一个唯一标记 记录是同一次请求。比如 用threadlocal + uuid的方式
JAVA丶斌 2016-11-09
  • 打赏
  • 举报
回复
路过的大神指点下。
ipqtjmqj 2016-11-08
  • 打赏
  • 举报
回复
log内容中增加时间输出

25,984

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧