logging - 在.Net核心中使用Serilog时侦听器的相关ID
问题描述
我有一个 .net 核心控制台应用程序,它是 RabbitMQ 的侦听器。另外我正在使用 Serilog 进行日志记录。将消息推送到队列中的 API 在消息中添加一个相关 ID 作为参数。在编写日志时,我希望将 CorrelationID(在 serilog 配置的输出模板中指定)替换为消息中可用的,以端到端跟踪操作。任何人都可以提出一种方法来实现这一目标吗?
注意:如果是 Web 请求,Serilog 提供的中间件(Scoped Middleware 或 LogContext)来救援。但是,它们需要 HttpContext(出于显而易见的原因)。对于这种侦听器请求,我一直在寻找解决方案
任何帮助深表感谢
解决方案
在您收到消息时,您应该能够
using (LogContext.PushProperty("corrId", msg.CorrId))
ProcessMessage(msg)
您还可以在日志格式字符串中添加一个....|{Properties}
元素,以获取与给定消息关联的消息模板中未使用的任何属性(但听起来您已经涵盖了)
推荐阅读
- ansible - ansible 对来自多个主机的结果进行迭代以提取特定的键值
- reactjs - React 延迟服务器端渲染
- java - 如何使用 JAXB 防止 XML 实体注入
- java - 在namedParameterJdbcTemplate.batchUpdate(query..)中出现错误,在查询中使用in-clause时
- javascript - What happens to other observables when rxjs.race() has been won?
- regex - 正则表达式在“/”之前返回所有字符,但如果有 2 个“/”,则在此之前返回所有字符
- android - Funtouch OS 中的 Play 服务视觉 API
- android - 对于我在广播接收器中指定的任何条件,我都看不到 toast 消息
- java - Testng && Spring上下文单元测试->测试方法前后执行sql
- ios - 使用 UserDefault 快速存储和检索数组数据