Доступна ли принудительная регистрация в Microsoft.Extensions.Logging
У меня есть приложение ASP.NET Core. я использую Microsoft.Extensions.Logging.ILogger
интерфейс с Serilog
провайдер
В производственной среде уровень журнала установлен на Error
, Так что-нибудь ниже Error
loglevel не будет зарегистрирован.
Есть Force
регистрация доступна в Microsoft.Extensions.Logging
, который будет регистрировать сообщение независимо от того, какой уровень журнала установлен?
По сути, я хочу регистрировать некоторую информацию (временно), не устанавливая LogLevel в Information, потому что это будет регистрировать все другие ненужные информационные сообщения.
Обновление 1
Так что я обновил свой appsettings.json согласно предложению, однако это не сработало. Обратите внимание, что у serilog также есть собственный уровень логирования, который я прокомментировал. Но все еще не работает.
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Error",
"MyUserService": "Information"
}
},
"Serilog": {
"Using": [ "Serilog.Sinks.MSSqlServer" ],
//"MinimumLevel": "Error",
"WriteTo": [
{
"Name": "MSSqlServer",
"Args": {
//"restrictedToMinimumLevel": "Error",
"connectionString": "Data Source=.\\SQLExpress;Initial Catalog=MyDataBase;Integrated Security=True;MultipleActiveResultSets=True",
"tableName": "Logs"
}
}
],
"Properties": {
"Application": "MyApplication"
}
}
а потом в MyUserService
public class MyUserService : BaseService, IMyUserService
{
private readonly ILogger<MyUserService> _logger;
public MyUserService(MyDBContext dbContext, ILogger<MyUserService> logger)
: base(dbContext)
{
_logger = logger;
}
public async Task DoSomethig()
{
_logger.LogInformation("Log something meaningful here");
}
}
и в program.cs
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseApplicationInsights()
.UseUrls("http://*:40006")
.ConfigureAppConfiguration((hostingContext, config) =>
{
//removed for brevity
})
.ConfigureLogging((hostingContext, logging) =>
{
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(hostingContext.Configuration)
.CreateLogger();
logging.AddSerilog();
})
.Build();
1 ответ
Идея состоит в том, чтобы настроить уровень журнала для каждой категории журнала.
Как только вы позволите себе ввести ILogger<MyCategory>
(где MyCategory
может быть любым типом - специальным типом, просто чтобы указать категории журнала или просто класс, из которого вы входите), вы можете настроить уровень журнала независимо от всего остального:
"Logging": {
"LogLevel": {
"Default": "Error",
"MyCategory": "Information"
}
}