gpt4 book ai didi

.net - 如何使用 Serilog ForContext

转载 作者:行者123 更新时间:2023-12-03 23:32:12 29 4
gpt4 key购买 nike

我是 Serilog 的新手,我很难弄清楚如何使用上下文功能。当我运行输出文件下面的代码时,不包含报告 ID。任何想法我缺少什么?

var logger = new LoggerConfiguration()
.WriteTo
.File(@"C:\Log.txt")
.CreateLogger()
.ForContext("Report ID", 10);

logger.Information("Test");

最佳答案

并非所有附加到日志事件的属性都会被附加到记录器的所有接收器呈现;这里使用的文件接收器只包括时间戳、级别、消息等。

要将报告 ID 放入文件,请将其包含在接收器的 outputTemplate 中。 :

var logger = new LoggerConfiguration()
.WriteTo.File(@"C:\Log.txt",
outputTemplate: "{Timestamp:u} [{Level}] ({ReportId}) {Message}{NewLine}{Exception}")
.CreateLogger()
.ForContext("ReportId", 10);

logger.Information("Test");

这将在每条消息中包含报告 ID。
ForContext通常用于创建一个简短的临时作用域;如果您想在所有消息上使用相同的属性,您可以使用 Enrich.WithProperty() :
var logger = new LoggerConfiguration()
.Enrich.WithProperty("ReportId", 10);
.WriteTo.File(@"C:\Log.txt",
outputTemplate: "{Timestamp:u} [{Level}] ({ReportId}) {Message}{NewLine}{Exception}")
.CreateLogger()

平面文件是使用结构化日志快速启动和运行的好方法,但使用更适合结构化存储的数据存储,例如 CouchDB , RavenDBSeq , 将使基于属性值查看和关联事件变得更好。

关于.net - 如何使用 Serilog ForContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23637669/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com