Доступна ли принудительная регистрация в 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"
  }
}
Другие вопросы по тегам