我正在开展绿地项目,我想将serilog与ninject整合。
用例如下:
- 有许多常见的库
- 这些库用于许多模块,即插件。这些插件在运行时都会收到一个唯一的GUID。这个
是一个抽象插件类的基本属性
插件的实现继承
- 我们希望将此唯一名称附加到插件所生成的每条日志消息中
以及从该插件调用公共库以便记录日志
消息可以追溯到创建它的插件的唯一实例
我的想法是:
- 创建单例记录器提供程序。这将由需要记录的任何东西调用。
- 使用postsharp和CallContext.LogicalSetData在任何对日志记录提供程序的调用之前设置GUID
- 使用CallContext.LogicalGetData获取单例记录器提供程序中的GUID。这将使用Logger.ContextFor检索该GUID的现有记录器,或者创建一个新的记录器以添加到字典中。
- 使用Ninject在请求时始终将ILoggerProvider解析为单身人士提供者
在我走下这条迂回路线之前,有没有更好的方法来做到这一点,也许是ninject?
感谢阅读。