2016-07-20 28 views
7

LogLevel'den bağımsız olarak her türden olayları tek Json dosyasına kaydediyorum. Şimdi bazı özel performans sayaçlarını ayrı bir Json dosyasına kaydetme ihtiyacım var. Bu nasıl Serilog'da yapılabilir? Farklı Logger Örneği oluşturmalı ve performans sayaçlarını günlüğe kaydedeceğim yerdeki bilgileri kullanmalı mıyım? Bunu LibLogSerilog: Farklı dosyalara oturum aç

+0

Olası yinelenen [Serilog - Birden günlük dosyaları] (https://stackoverflow.com/questions/28292601/serilog-multiple-log-files) sizin yazmak yukarı Oku –

cevap

2

ile birlikte kullanmak istiyorsanız Bunu, performans sayacı olaylarının belirli bir özellik değeri (LibLog'da OpenMappedContext()) veya belirli bir tür/ad alanı ile etiketlendiğinden emin olarak yapabilirsiniz.

var log = LogProvider.For<MyApp.Performance.SomeCounter>() 
log.Info(...); 

Serilog yapılandırılması

, ikinci dosyaya sadece gerekli olayları gönderebilir uygulanan filtre ile sub-logger.

Log.Logger = new LoggerConfiguration() 
    .WriteTo.Logger(lc => lc 
     .Filter.ByExcluding(Matching.FromSource("MyApp.Performance")) 
     .WriteTo.File("first.json", new JsonFormatter())) 
    .WriteTo.Logger(lc => lc 
     .Filter.ByIncludingOnly(Matching.FromSource("MyApp.Performance")) 
     .WriteTo.File("second.json", new JsonFormatter())) 
    .CreateLogger(); 
+0

: alt kaydediciler ile Serilog 2.0 maceraları . Emin değilim Eğer bir şey özledim, Ama, Bunu yaparsam, "" MyApp.Performance "günlükleri de dış kaydedici doğru gidecek? Bu özel günlükleri ana günlük dosyasına yazılmasını istemiyorum. – Shetty

+0

Ekleme ters filtreler ile iki alt-loglama boru hatları bunu yapmalı .. Cevaplama .. –

+0

Bu benim için çalıştı JsonFormatter kaldırmak için Düzenlenmiş cevabı. – Shetty