记录 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 部件的部件特定错误消息

MEF 方法是将日志记录接口导入插件和/或导出使用导出类上的自定义属性来配置记录器所需的任何元数据。

我对那个日志记录库(我们使用 log4net)不够熟悉,无法知道您需要哪些元数据,或者如果您没有导入日志记录接口接口,您将如何以统一的方式启动日志记录。