C# 使用Microsoft.Extensions.Logging可以筛选单个EventID吗?
我想生成一个日志文件,其中只包含特定EventId(或EventId)的日志输出。是否支持此类功能?如果您以提供程序的身份插入Serilog,则可以继续通过Microsoft.Extensions.logging进行日志记录,但应用Serilog的筛选以限制发送到日志文件的内容 为此,您需要使用以下Serilog配置:C# 使用Microsoft.Extensions.Logging可以筛选单个EventID吗?,c#,logging,serilog,C#,Logging,Serilog,我想生成一个日志文件,其中只包含特定EventId(或EventId)的日志输出。是否支持此类功能?如果您以提供程序的身份插入Serilog,则可以继续通过Microsoft.Extensions.logging进行日志记录,但应用Serilog的筛选以限制发送到日志文件的内容 为此,您需要使用以下Serilog配置: Log.Logger = new LoggerConfiguration() .Filter.ByIncludingOnly("EventId.Id = 9")
Log.Logger = new LoggerConfiguration()
.Filter.ByIncludingOnly("EventId.Id = 9")
.WriteTo.RollingFile("logs/log-{Date}.txt")
.CreateLogger();
(其中9
是您希望包含的任何事件id。)
您可以使用插入Serilog,要编译此示例,还需要安装Serilog.Sinks.RollingFile和Serilog.Filters.Expressions软件包。如果要使用appsettings文件配置Serilog,您可以使用类似以下内容:
"Serilog": {
"Using": ["Serilog.Sinks.File", "Serilog.Settings.Configuration", "Serilog.Expressions"],
"MinimumLevel": {
"Default": "Debug"
},
"WriteTo": [{
"Name": "File",
"Args": {
"path": "log.txt",
"rollingInterval": "Day",
"retainedFileCountLimit": "120",
"rollOnFileSizeLimit": "true",
"theme": "Serilog.Sinks.SystemConsole.Themes.AnsiConsoleTheme::Code, Serilog.Sinks.Console"
}
}
],
"Filter": [{
"Name": "ByIncludingOnly",
"Args": {
"expression": "EventId.Id = 101"
}
}
]
}
在using字段中,您必须放置所有要导入的Serilog包,然后配置一个用于写入日志的接收器,最后定义一个过滤器
我几乎花了一个上午的时间来实现这一目标,所以我希望这对你有所帮助