2015-02-03 6 views
8

Я использую Serilog для регистрации и не могу определить, как разделить события журнала на разные файлы. Например, я хочу регистрировать ошибки в error_log-ddmmyyyy.txt и предупреждения для warn_log-ddmmyyyy.txt.Serilog - несколько файлов журнала

Вот идет моя конфигурация регистратора:

Log.Logger = new LoggerConfiguration() 
      .WriteTo.Logger(lc => 
       lc.Filter.ByIncludingOnly(Matching.WithProperty("Level", "Warning")) 
        .WriteTo.RollingFile(
         Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Logs\warn_log-{Date}.txt"), 
         outputTemplate: OutputTemplate)) 
      .WriteTo.Logger(lc => 
       lc.Filter.ByIncludingOnly(Matching.WithProperty("Level", "Error")) 
        .WriteTo.RollingFile(
         Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Logs\error_log-{Date}.txt"), 
         outputTemplate: OutputTemplate)) 
      .CreateLogger(); 

Он работает только тогда, когда я указываю {Уровень} свойство exatcly в лог сообщения.

Я пытался использовать:

Matching.WithProperty<LogEventLevel>("Level", l => l == LogEventLevel.Warning) 

, но он не работает слишком.

+0

@Kiquenet, это приложение WCF. –

+0

Как вы регистрируете ошибки и записываете предупреждения в свой код с помощью Serilog? – Kiquenet

+0

@Kiquenet, примеры приведены ниже: Сообщение об ошибке с данными об исключении: 'Log.Logger.Error (ex,« Здесь появляется сообщение об ошибке с {Data} », someData)' Предупреждающее сообщение: Log.Logger.Warning («Здесь идет предупреждающее сообщение с {Data}», someData) ' –

ответ

7

Я думаю, что вам нужно:

.ByIncludingOnly(evt => evt.Level == LogEventLevel.Warning) 
+0

... ум, рассматривающий этот вопрос, редактирование и последние несколько комментариев в ответе ... https: //stackoverflow.com/questions/47565008/trouble- преобразование-serilog-configuration-code-line-to-json-configuration/47566787? noredirect = 1 # comment82106820_47566787 – dinotom

18

Я использую следующую конфигурацию, и это работает для меня:

  Log.Logger = new LoggerConfiguration() 
        .MinimumLevel.Debug() 
        .WriteTo.LiterateConsole() 
        .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Information).WriteTo.RollingFile(@"Logs\Info-{Date}.log")) 
        .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Debug).WriteTo.RollingFile(@"Logs\Debug-{Date}.log")) 
        .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Warning).WriteTo.RollingFile(@"Logs\Warning-{Date}.log")) 
        .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Error).WriteTo.RollingFile(@"Logs\Error-{Date}.log")) 
        .WriteTo.Logger(l => l.Filter.ByIncludingOnly(e => e.Level == LogEventLevel.Fatal).WriteTo.RollingFile(@"Logs\Fatal-{Date}.log")) 
        .WriteTo.RollingFile(@"Logs\Verbose-{Date}.log") 
        .CreateLogger(); 
+1

Упоминается не относительно вопроса, а из-за чистого решения, представленного для регистрации различных уровней журнала в отдельных файлах. – mok

+0

Спасибо за комментарий и комментарий :) –

+0

Нравится этот. Единственный вопрос, как его можно перевести в конфигурационный файл JSON? Я попытался найти ссылку на синтаксис, но мне почему-то не удалось. – Pritorian

Смежные вопросы