并非所有附加到日志事件的属性都将由附加到记录器的所有接收器呈现;这里使用的文件接收器只包括时间戳、级别、消息等。
要将报告 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
或RavenDB
,Seq
将更好地查看和关联基于属性值的事件。