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