在 .Net 核心中使用 Serilog 时侦听器的相关 ID
Correlation Id for listener while using Serilog in .Net core
我有一个 .net 核心控制台应用程序,它是 RabbitMQ 的侦听器。我还使用 Serilog 进行日志记录。将消息推入队列的 API 添加一个 Correlation ID 作为消息中的一个参数。在编写日志时,我希望将 CorrelationID(在 serilog 配置的输出模板中指定)替换为消息中可用的 CorrelationID,以端到端地跟踪操作。有人可以提出实现此目标的方法吗?
注意:如果是web请求,Serilog提供的中间件(Scoped Middleware或LogContext)来拯救。但是,它们需要 HttpContext(出于显而易见的原因)。对于这种监听请求,我卡在了寻找解决方案中
非常感谢任何帮助
当您收到消息时,您应该能够
using (LogContext.PushProperty("corrId", msg.CorrId))
ProcessMessage(msg)
您还可以 add a ....|{Properties}
element into your log format string 选取与给定消息关联的消息模板中未使用的任何属性(但听起来您已经涵盖了)
我有一个 .net 核心控制台应用程序,它是 RabbitMQ 的侦听器。我还使用 Serilog 进行日志记录。将消息推入队列的 API 添加一个 Correlation ID 作为消息中的一个参数。在编写日志时,我希望将 CorrelationID(在 serilog 配置的输出模板中指定)替换为消息中可用的 CorrelationID,以端到端地跟踪操作。有人可以提出实现此目标的方法吗?
注意:如果是web请求,Serilog提供的中间件(Scoped Middleware或LogContext)来拯救。但是,它们需要 HttpContext(出于显而易见的原因)。对于这种监听请求,我卡在了寻找解决方案中
非常感谢任何帮助
当您收到消息时,您应该能够
using (LogContext.PushProperty("corrId", msg.CorrId))
ProcessMessage(msg)
您还可以 add a ....|{Properties}
element into your log format string 选取与给定消息关联的消息模板中未使用的任何属性(但听起来您已经涵盖了)