2015-02-03 27 views
8

Günlük için Serilog kullanıyorum ve günlük olaylarını farklı dosyalara nasıl ayıracağımı anlayamıyorum. Örneğin, error_log-ddmmyyyy.txt dosyasına ve warn_log-ddmmyyyy.txt dosyasına uyarı göndermek istiyorum. Sadece ben günlük mesajında ​​exatcly {Seviye} özelliğini belirtmek çalışırSerilog - birden fazla günlük dosyası

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(); 

:

İşte benim logger yapılandırmasını gider.

kullandığım çalışıyordu:

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

ama çok işe yaramadı.

+0

@Kiquenet, bu WCF uygulamadır. –

+0

Serilog'u kullanarak kodunuzdaki hataları nasıl kaydeder ve günlükleri nasıl kaydedersiniz? – Kiquenet

+0

@Kiquenet, örnekler aşağıdadır: Özel durum ayrıntıları ile birlikte hata iletisi: 'Log.Logger.Error (ex," {Data} ile hata iletisi gider ", someData)' Uyarı iletisi: 'Log.Logger.Warning ("Burada," Data [Veri} "ile uyarı mesajına gidiyoruz, bazı Data) ' –

cevap

7

Sana ihtiyacım var:

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

... bu soruya bakarken, cevap ve son birkaç yorum yanıtında ... https: //stackoverflow.com/questions/47565008/trouble-/47566787? noredirect = 1 # comment82106820_47566787 – dinotom

18

aşağıdaki yapılandırmayı kullanmak ve bu benim için çalışıyor:

  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

Upvoted soruya ilişkin değil serilog yapılandırma-kod satırı-to-json-konfigürasyonu-dönüştürme, fakat ayrı dosyalarda farklı günlük düzeylerini giriş için sunulan temiz çözümün. – mok

+0

Teşekkürler ve yorum için teşekkürler :) –

+0

Bunu beğendi. Tek soru, JSON config dosyasına nasıl çevrilebilir? Bir sözdizimi referansı bulmaya çalıştım ancak bir nedenden ötürü başarısız oldu. – Pritorian

İlgili konular