记录 mef 部件的部件特定错误消息
本文关键字:错误 消息 mef 记录 | 更新日期: 2023-09-27 17:57:16
记录导入零件的零件特定错误的首选方法是什么? 例如,如果您有以下合同:
public interface IDoStuff
{
void DoYourStuff();
}
具有多种实现:
[Export(typeof(IDoStuff))]
public class DoStuffCorrectly : IDoStuff
{
//implement void run
}
[Export(typeof(IDOstuff))]
public class DoStuffWithExceptions : IDoStuff
{
// implement void run and throws exception
}
并且您有一个使用 mef 来组成零件的类型。
public class DoStuffRunner
{
[ImportMany(typeof(IDoStuff))]
IEnumerable<IDoStuff> DoStuffPats {get;set;}
//some method that loops through the IEnumerable and calls run
public void Run()
{
foreach(IDostuff doit in DoStuffParts)
{
doit.Run();
}
}
}
在与导入程序的执行程序集中,我正在使用 entlib 异常处理和日志记录应用程序块。 日志记录应用程序块配置为向团队发送常规错误消息。 我希望能够包含的一些信息是哪个部分失败,以及可能哪个组收到电子邮件。
这很简单,可以在应用程序配置中进行静态配置,但会导致添加的每个部分的 1:1 配置,并且会破坏将 dll 放入垃圾箱的目的。 如果您可以控制零件装配体中的配置,那就太好了。
那么,有哪些可能的方法可以允许部件公开信息,这些信息可能允许导入的部件提供符合 MEF 意识形态的日志记录配置信息?
MEF 方法是将日志记录接口导入插件和/或导出使用导出类上的自定义属性来配置记录器所需的任何元数据。
我对那个日志记录库(我们使用 log4net)不够熟悉,无法知道您需要哪些元数据,或者如果您没有导入日志记录接口接口,您将如何以统一的方式启动日志记录。