Явный уровень журнала вместо MinimumLevel для Serilog - PullRequest
1 голос
/ 29 мая 2019

Есть ли способ настроить ОДИН уровень журнала для каждого файла в serilog?

Я знаю, что могу настроить один файл на "MinimumLevel", но это не то, что мне нужно.

Ответы [ 2 ]

3 голосов
/ 30 мая 2019

Serilog.Sinks.Map может использоваться для этого без слишком большого дублирования:

Log.Logger = new LoggerConfiguration()
    .WriteTo.Map(le => le.Level, (level, wt) => wt.File($"C:\\Temp\\{level}-logs.txt"));
2 голосов
/ 29 мая 2019

У меня было похожее требование.После некоторых исследований я добавил следующее в класс Startup моего веб-интерфейса .net core 2.2:

Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Override("Microsoft", LogEventLevel.Error)
    .WriteTo.Logger(lc => lc
        .Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Error)
        .WriteTo.RollingFile("C:\\Temp\\erros-logs.txt"))
    .WriteTo.Logger(lc => lc
        .Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Information)
        .WriteTo.RollingFile("C:\\Temp\\info-logs.txt"))
    .CreateLogger();

Если вы читаете настройки из файла appsettings.json и хотите использовать вышеизложенное, выдолжен передать вашу логику из файла.

Мой ответ в значительной степени вдохновлен следующим постом: Ограничить до уровня

...