2017-10-12 1 views
2

複数のログファイルを作成したいのですが、いくつかのソースを除外する方法を見つけようとしています。あなたは、私がサブロガーを持って見ることができるようにSerilog:複数のソースを除外する方法

Log.Logger = new LoggerConfiguration() 
    .ReadFrom.Configuration(configuration) 
    .Enrich.FromLogContext() 
    .WriteTo.Console() 
    .WriteTo.Logger(l => l.Filter.ByIncludingOnly(Matching.FromSource("Hangfire")) 
     .WriteTo.Async(a => a.RollingFile("Logs/hangfire-{Date}.txt")) 
    ) 
    .WriteTo.Logger(l => l.Filter.ByExcluding(Matching.FromSource("Hangfire")) 
     .WriteTo.Async(a => a.RollingFile("Logs/main-{Date}.txt")) 
    ) 
    .CreateLogger(); 

は:最初hangfireのを除いて唯一hangfireログ、二番目のすべてのログを収集しこれが私のコードです。しかし、私は別の除外フィルターを追加したい、私は、hangfireとIMyClassログを除外したい。どうしたらいいですか?

答えて

1

Matching.FromSource()LogEventからboolまでの関数を返します。

var hangfire = Matching.FromSource("Hangfire"); 
var myClass = Matching.FromSource("MyClass"); 

そしてインラインそれらを呼び出す:あなたは、2つのフィルタ関数を作成することの利点を取ることができ

.WriteTo.Logger(l => l.Filter.ByExcluding(le => myClass(le) || hangfire(le)) 
    .WriteTo.Async(a => a.RollingFile("Logs/main-{Date}.txt")) 
) 
+1

はどうもありがとうございました。 – user348173

関連する問題