是否可以登录传入参数是通用的方法?例如
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;
}
在上面注意,我在模板中使用字符串连接,我不确定这是最佳实践。还有另一种记录传入对象的方法吗?
答案 0 :(得分:4)
您是否考虑过只传递查询对象的类型,或查询对象本身? E.g:
Log.Information("Processed {@Query} in {Elapsed} ms", query, watch.ElapsedMilliseconds);
这将打印输出,如:
Processed SomeQuery { SomeProp = "foo" } in 100 ms