我们目前正在使用 Autofac 并利用 AutofacSerilogIntegration 在将 ILogger 注入混凝土时自动设置日志记录上下文。集成使用记录器注入的类型设置记录上下文。这在 Autofac 中并不难,因为有一个“准备”事件可用于任何分辨率......所以 ILogger 的分辨率可以被拦截,并且 ILogger 可以在此时增强,Autofac 允许包含类型从这个拦截器中可以确定。这是代码: https ://github.com/nblumhardt/autofac-serilog-integration/blob/master/src/AutofacSerilogIntegration/ContextualLoggingModule.cs
我已经在 DryIoc 中看到了拦截的可用性,但没有像 Autofac 方法那么简单。在 DryIoc 中,看起来必须为每个注入要被拦截的类型的混凝土注册拦截器。 https://bitbucket.org/dadhi/dryioc/wiki/Decorators#markdown-header-decorator-as-interceptor-with-castle-dynamicproxy
有人对在 DryIoc 中解决此问题的最佳方法有建议吗?这是否可能以一种相对通用和高效的方式实现?查看 DryIoc 文档后,我没有看到直接的方法,因为我没有看到可以在某种通用拦截器中确定注入的类的地方(并且可以全局应用) . 我显然不想从我的记录器中检查调用堆栈,因为众所周知这非常慢。
谢谢