执行以下操作时,我在 serilog 中丢失了上下文
public async Task<byte[]> TestAsync(TestQuery query)
{
using (LogContext.PushProperty("CorrelationId", query.CorrelationId))
{
var builder = new Foo(this.logger);
return await builder.DoSomething(query);
}
}
当我说失去上下文时,我的意思是如果 DoSomething 继续记录,那么早期消息具有相关 ID,而后面的消息则没有。
相反,如果我做以下一切都很好 - 即相关 id 出现在所有下游消息上。
public async Task<byte[]> TestAsync(TestQuery query)
{
var lgr = this.logger.ForContext("CorrelationId", query.CorrelationId);
var builder = new Foo(lgr);
return await builder.DoSomething(query);
}
我对后者很满意,但从我看到的一个代码示例中,我希望前者能够工作。