0

着信引数がジェネリックであるメソッドにログインすることはできますか? 例えば

public async Task<TResult> Handle(TQuery query)
{
    var watch = Stopwatch.StartNew();
    var result = await _handler.Handle(query);
    watch.Stop();
    Serilog.Log.Logger.Information("Processed {@" + query.GetType().Name + "} in {Elapsed} ms",
        query.GetType().Name, watch.ElapsedMilliseconds);
    return result;
}

上記では、テンプレートで文字列連結を使用していますが、これがベスト プラクティスであるかどうかはわかりません。着信オブジェクトをログに記録する別の方法はありますか?

4

1 に答える 1

4

クエリ オブジェクトの型、またはクエリ オブジェクト自体を渡すことだけを検討しましたか? 例えば:

Log.Information("Processed {@Query} in {Elapsed} ms", query, watch.ElapsedMilliseconds);

これにより、次のような出力が出力されます。

Processed SomeQuery { SomeProp = "foo" } in 100 ms
于 2014-11-30T21:55:18.223 に答える