Joh*_*ore 2 .net c# logging serilog seq-logging
我正在将 Serilog 与 Seq 一起使用,并希望使用我自己的属性来丰富 Seq 中出现的日志记录。
如果我输入一个日志语句,如...
Log.Information("ProcessCycle {Site} {Activity}", SiteName, ActivityName);
Run Code Online (Sandbox Code Playgroud)
在 Seq 我得到...
请注意,站点和活动值在 Seq 中显示为丰富的属性,但它们也显示在整体消息中。
如何记录获取丰富属性的位置,但文本消息行中没有显示值?请注意,我有 NuGet 包,它为每个调用添加了一个 ThreadId。我希望 Site 和 Activity 属性位于丰富的道具列表中,但不一定打印在消息行中。
对此的答案可能还需要了解我们的应用程序。
该应用程序是一个 Windows 服务,它产生多个做不同事情的活动。因此,Windows 服务编排了其中包含的各种活动。按照计划,它只是在每个活动上调用“流程”来完成一些工作。每次流程被编排器调用时,我都需要该 Activity 的所有日志记录以自动包含如上所示的 Site 和 Activity 值(以及更多属性值,但我不希望它们全部打印在消息行中)。
因此,我们将看到的不是上面的条目,而是... 注意消息现在只显示为“ProcessCycle”。
Log.Information("ProcessCycle {Site} {Activity}", SiteName, ActivityName);
Run Code Online (Sandbox Code Playgroud)
需要改为:
Log.ForContext("Site",SiteName)
.ForContext("Activity",ActivityName)
.Information("ProcessCycle")
Run Code Online (Sandbox Code Playgroud)
随心所欲地呈现。
您还可以在全局范围内执行Enrich.FromLogContext和执行LogContext.PushProperty(搜索这两个字符串以查找示例)。
由约翰利弗莫尔添加
有关 FromLogContext 和其他方法的更多信息,请访问... https://nblumhardt.com/2016/08/context-and-correlation-structured-logging-concepts-in-net-5/
FromLogContext 创建一个 ILogger,可在范围内用于后续日志记录调用。
| 归档时间: |
|
| 查看次数: |
841 次 |
| 最近记录: |