并发情况,日志应如何优雅书写

问题遇到的现象和发生背景

存在并发情景情况下,日志应该怎样写。

问题相关代码,请勿粘贴截图
log.info("入参")
log.info("出参")
运行结果及报错内容

如果直接在用的地方写log.info,当两个用户同时使用程序时,日志就乱了

我的解答思路和尝试过的方法

我把日志做成StringBuff在方法中传递,但是这样方法的入参和出参都会带有这个stringBuff。
入参还好说,但出参只有一个位置,如果用map来作为出参,将会降低代码的可读性

我想要达到的结果

方法的出参还是原本使用到的对象,但是日志并发的问题也要解决

Trace ID会是不错的解决方案。同一个业务流程,使用同一个Trace ID标识即可。

增加日志元数据把日志串起来,也就是在每条日志中加traceID这种,就是往MDC里写一个请求ID然后写进日志的pattern中,spring生态有现成的分布式日志链路追踪组件sleuth加zipkin,也可以选择收集到elk做可视化

在日志上把并发日志做不同标识

并不并发你不是都有线程号么?

可以看看这篇博客,讲得蛮好也比较详细
https://blog.csdn.net/maoyeqiu/article/details/119456270?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165952870516782184637091%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165952870516782184637091&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-1-119456270-null-null.142^v39^pc_rank_34&utm_term=log.info&spm=1018.2226.3001.4187