我想生成一个日志文件,其中只包含来自特定EventId(或EventIds)的日志输出。是否支持此类功能?
答案 0 :(得分:0)
如果您将Serilog作为提供程序插入,则可以继续通过 Microsoft.Extensions.Logging 进行日志记录,但应用Serilog的过滤来限制发送到日志文件的内容。
为此,您需要使用以下Serilog配置:
summarise_if
(其中Log.Logger = new LoggerConfiguration()
.Filter.ByIncludingOnly("EventId.Id = 9")
.WriteTo.RollingFile("logs/log-{Date}.txt")
.CreateLogger();
是您要包含的任何事件ID。)
您可以使用https://github.com/serilog/serilog-aspnetcore插入Serilog,要编译此示例,您还需要安装 Serilog.Sinks.RollingFile 和 Serilog.Filters。表达式包。
答案 1 :(得分:0)
如果你想使用 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 包,然后配置一个用于写入日志的接收器,最后定义一个过滤器。
我几乎花了一个上午的时间来实现这一目标,所以我希望它对您有所帮助