LogLevelに関係なく、すべてのタイプのイベントを単一のJsonファイルに記録しています。現在、いくつかのカスタムパフォーマンスカウンターを別のJsonファイルに記録する必要があります。これはどのようにしてSerilogで実行できますか。別のロガーインスタンスを作成して、パフォーマンスカウンターをログに記録する場所で使用する必要がありますか?これをLibLogで使用したい
これを行うには、まずパフォーマンスカウンターイベントに特定のプロパティ値(LibLogのOpenMappedContext()
)または特定のタイプ/名前空間のタグが付けられていることを確認します。
var log = LogProvider.For<MyApp.Performance.SomeCounter>()
log.Info(...);
Serilogを設定する場合、フィルターを適用した sub-logger は、必要なイベントのみを2番目のファイルに送信できます。
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();
独立したロギングパイプラインが必要な場合は、別のインスタンスを作成してください。これは奪われて https://github.com/serilog/serilog/wiki/Lifecycle-of-Loggers から改作されます:
using (var performanceCounters = new LoggerConfiguration()
.WriteTo.File(@"myapp\log.txt")
.CreateLogger())
{
performanceCounters.Information("Performance is really good today ;-)");
// Your app runs, then disposal of `performanceCounters` flushes any buffers
}