【发布时间】:2021-05-02 20:40:54
【问题描述】:
我正在使用NET5 ASP.NET MVC 应用程序。应用程序正在使用Serilog.AspNetCore 3.4.0 进行日志记录
appsettings.json
{
"Logging": {
"LogLevel": {
"Default": "Error"
}
},
"Serilog": {
"Using": [ "Serilog.Sinks.Console"],
"WriteTo": [
{
"Name": "Console"
}
]
}
}
Program.cs
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.UseStartup<Startup>()
.ConfigureLogging((hostingContext, logging) =>
{
logging.ClearProviders();
})
.UseSerilog((hostingContext, logging) =>
{
logging.ReadFrom.Configuration(hostingContext.Configuration);
});
});
我也试过
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder
.UseStartup<Startup>()
.ConfigureLogging((hostingContext, logging) =>
{
logging.ClearProviders();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(hostingContext.Configuration)
.CreateLogger();
logging.AddSerilog();
});
});
问题
我的期望是不会在Console 中显示Information 日志,因为默认的LogLevel 是Error。
但是,这是行不通的。在控制台中,我看到每个请求都被记录下来,包括 Information
在我的整个应用程序中,我使用Microsoft.Extensions.Logging.ILogger<MyClassName> 来记录信息。所有这些语句实际上都在记录 Info,即使 LogLevel 是 Error。
看起来 Serilog 忽略了来自 Microsoft.Extensions.Logging 的 LogLevel。
请注意,我可以将 serilog 的 restrictedToMinimumLevel 属性设置为 Error 并停止记录信息。但是我认为 serilog 应该遵守 Microsoft.Extension.Logging
【问题讨论】:
标签: c# asp.net-core serilog