2

私は Serilog を初めて使用し、{SourceContext:l}各ログ メッセージに追加することなく、必要な場合にのみクラス名を表示することに苦労しています。私は次のようにコードを書くことができることを知っています:

Log.ForContext<Class1>().Verbose("message {SourceContext:l}");

以下のようにロガーをセットアップしています。

    var log = new LoggerConfiguration()
                .MinimumLevel.Verbose()
                .WriteTo
                .ColoredConsole(outputTemplate: "{Timestamp:G} [{Level}] {SourceContext} {Message}{NewLine:l}{Exception:l}")
                .CreateLogger();

ここで見られるようにクラスが指定されている場合にのみ、クラス名が表示されることを望んでいます。

Log.ForContext<Class1>().Verbose("message");

などのログが作成されている場合は表示されません。

Log.Verbose("message");

ただし、上記の例では、単に「メッセージ」ではなく「{SourceContext} メッセージ」の形式でログアウトが出力されますが、これは私が望んでいるものではありません。

4

1 に答える 1

2

これは のバグである可能性がありますColoredConsoleSink。通常、出力トークンをレンダリングするときに、欠損値は空白のままになります。

提起: https://github.com/serilog/serilog/issues/649

このバグがあるとは思わないLiterate Console シンク ( https://github.com/serilog/serilog-sinks-literate ) に切り替えてみてください。

于 2016-01-27T22:03:44.727 に答える