背景
在日志记录时,我们往往希望体现出一条清晰的操作线索,先执行了A,然后执行了B,接着执行C……但在 Web 项目中,往往同时处理着多个不同客户端发出的请求,如果这些请求都在进行相同的操作,我们的日志将无法分辨。项目中使用的日志框架是 log4net,过去,我在项目中通过 AutoFac 创建了一个生命周期为 PreRequest 的对象,内部维护了一个 GUID,用来充当 RequestId。这样在记录日志时将该 RequestId 一同记录上,就解决了该问题。
后来领导给其他小组提到了 log4net 的 MDC,希望我们也进行调整,大概意思是可以用 MDC 储存 RequestId 并能方便的生成到日志中。本文记录了这次修改的过程。