【发布时间】:2021-02-23 12:08:32
【问题描述】:
我正在尝试使用Hangfire Filter 和ILogger.BeginScope 来记录相关ID。要求是每个作业执行都有自己的关联 ID,以便在发生某些事情时更容易将同一作业执行的日志组合在一起。
我的方法是在IServerFilter.OnPerforming 方法中,我首先创建一个GUID,然后使用下面的代码开始范围
logger.BeginScope(new FormattedDictionary<string, object>
{
["CorrelationId"] = correlationId
})
IServerFilter.OnPerforming 方法中的后续日志语句将附加相关 ID。但不幸的是,在作业执行期间,日志语句将没有相关 id 范围。作业类的ILogger 实例是使用构造函数解析的。而ILogger 方法IServerFilter.OnPerforming 的实例是使用IServiceProvider.GetRequiredService 方法解析的
我想知道为什么会这样?我们如何解决这个问题?只要可行,我对实现日志记录关联 ID 的其他方法持开放态度。
【问题讨论】:
标签: hangfire