提问人:Ikinidae 提问时间:10/27/2023 最后编辑:Tiny WangIkinidae 更新时间:10/27/2023 访问量:86
Serilog:如何编写一个只有一个级别的文件
Serilog: how to write a file with only one level
问:
我被要求在开发中编写日志级别 Information、Warning 和 Error,但每个级别都在一个单独的文件中,因此我只包含信息日志,只包含警告日志,只包含错误日志。information.txt
warning.txt
Error.txt
这是我目前的实现(它有效)。
在:Program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseSerilog((webHostBuilderContext, loggerConfiguration) =>
{
loggerConfiguration.ReadFrom.Configuration(webHostBuilderContext.Configuration);
});
});
在 appsettings 中:
"Serilog": {
"MinimumLevel": "Information",
"WriteTo": [
{
"Name": "Console"
},
{
"Name": "File",
"Args": {
"path": "wwwroot/Logs/log.txt",
"rollingInterval": "Day",
"reatinedFileCountLimit": 14,
"restrictedToMinimumLevel": "Information"
}
}
]
},
我已经安装了 Serilog.Expressions 包并阅读了文档,我知道我必须使用这样的东西
"Filters": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "@l = 'Information'"
}
}
]
但我不明白它应该放在哪里。我试过把它放在里面或中间,但它不起作用,有人可以帮助我吗?Args
Args
Name
我已经在 stackoverflow 上阅读了很多线程,但没有任何效果:(
答:
1赞
Qiang Fu
10/27/2023
#1
这有效,但不能使用 doc。
using Serilog;
using Serilog.Events;
Log.Logger = new LoggerConfiguration()
.WriteTo.Logger(l => l
.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Information)
.WriteTo.File(
path: "information.txt"))
.WriteTo.Logger(l => l
.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error)
.WriteTo.File(
path: "error.txt"))
.CreateLogger();
Log.Information("test Information");
Log.Error("test Error");
---------------使用appsettings.json--------------
安装包进行更新Serilog.Expressions
"Serilog": {
"WriteTo": [
{
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "@l = 'Information'"
}
}
],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "information.txt"
}
}
]
}
}
},
{
"Name": "Logger",
"Args": {
"configureLogger": {
"Filter": [
{
"Name": "ByIncludingOnly",
"Args": {
"expression": "@l = 'Error'"
}
}
],
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "error.txt"
}
}
]
}
}
}
]
}
评论
0赞
Ikinidae
10/27/2023
我需要在应用程序设置中配置,以便我可以为每个环境使用不同的配置
0赞
Qiang Fu
10/27/2023
@Ikinidae我已经更新了答案,你可以试一试。
1赞
Ikinidae
10/27/2023
它终于起作用了!!非常感谢!<3 所以这些是子记录者?
1赞
Qiang Fu
10/27/2023
@Ikinidae 是的,他们是子记录者。
评论