上下文serilogger是否也从Autofac容器中获得相同的依赖?

时间:2016-11-27 21:22:31

标签: c# autofac serilog

目前,我们正在将Serilog与ApplicationInsights一起使用来记录系统。我们尝试解决的一个问题是在单个请求中将唯一操作ID附加到每个日志消息。因此可以跟踪错误消息。

为容器构建ILogger时

serilogConfig.WriteTo.ApplicationInsightsTraces(telemetryClient);

telemtryClient注册为instancePerRequest,并在Controller上的actionAttribute之一中分配唯一的OperationID

public override void OnActionExecuting(HttpActionContext actionContext)
{
    var requestScope = actionContext.Request.GetDependencyScope();
    var telemetryClient = requestScope.GetService(typeof(TelemetryClient)) as TelemetryClient;
    telemetryClient.Context.Operation.Id = Guid.NewGuid().ToString();
    base.OnActionExecuting(actionContext);
}

在控制器的构造函数内部需要记录

public ControllerA(ILogger logger)
{
    var contextLogger = logger.ForContext<ControllerA>();
}

现在的问题是operationID没有出现在日志消息上。

即使我们将主ILogger注册为instancePerRequest,contextLogger仍然会获得与主要依赖对象相同的依赖对象吗?

0 个答案:

没有答案