serilog - 遍历在 Serilog 中注册的所有接收器和浓缩器
问题描述
如何遍历在 Serilog 中注册的所有接收器(ILogEventSink
对象)或丰富器(对象)?ILogEventEnricher
我正在使用Serilog.AspNetCore
.
谢谢。
所以,我幼稚的想法是:在 Emit 操作中,我必须调用需要设置当前 HttpContext 的第三方服务。似乎 Emit 操作在没有分配 HttpContext 的后台线程上运行。所以在 Emit 操作中,我想解析 IHttpContextAccesor 服务并设置它的 HttpContext 属性。然后我可以调用需要设置 HttpContext 的第三方服务,一切都会好起来的。我将获得的当前 httpContext 实例位于我的自定义中间件中,而这里就是我想将 httpContext 实例注入Sink 实例(到它的 [ThreadStatic] 字段)以完成上述场景的地方。
另一种方法是在每个 http 请求的中间件中重新创建所有 Serilog(及其 Sink),并将 httpContext 作为参数传递给它的构造函数。昂贵的。
解决方案
Serilog 不支持这种情况。
推荐阅读
- api - 围绕 GraphQL 嵌套深度的最佳实践
- html - 我想通过 bootstrap4 在不同的行中制作一个图标和文本
- c++ - 检查文件中所有在同一行中同时包含一个或一个字符串的行
- ajax - 在模式更新后如何刷新父索引的部分视图以添加新信息?
- php - 如何在 Laravel 中验证日期时间数组?
- spring-boot - SpringBoot 应用程序中没有“testgroup.private_clinic.dao.PatientDAO”类型的合格 bean
- javascript - JavaScript 模板文字插值 rgba() 值
- r - 添加一个交互式按钮来切换映射哪个变量以填充 ggplotly in r
- python - 使用变量创建 @get() 请求 - bottle.py
- javascript - 使用Vue组件渲染功能时的无限循环