Доступна ли принудительная регистрация в Microsoft.Extensions.Logging - PullRequest
0 голосов
/ 16 мая 2018

У меня есть приложение 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 Ответ

0 голосов
/ 18 мая 2018

Идея состоит в том, чтобы настроить уровень журнала для каждой категории журнала.

После того, как вы позволите себе ввести ILogger<MyCategory> (где MyCategory может быть любого типа - особый тип просто для указания категорий журнала или простокласс, из которого вы входите), вы можете настроить уровень журнала независимо от всего остального:

"Logging": {
  "LogLevel": {
    "Default": "Error",
    "MyCategory": "Information"
  }
}
...