记录零件的零件特定错误消息

时间:2011-05-23 16:23:33

标签: c# .net logging enterprise-library mef

使用导入的零件记录零件特定错误的首选方法是什么?例如。如果你有以下合同:

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来组成部件的Type。

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异常处理和日志记录应用程序块。日志记录应用程序块配置为向团队发送常规错误消息。我希望能够包含的一些信息是哪个部分失败了,哪些组可能收到电子邮件。

这很简单,可以在app配置中静态配置,但是会为每个添加的部分导致1:1配置,并且类型会失败在bin中删除dll的目的。如果你可以控制零件装配中的配置,那就太好了。

那么,有哪些可能允许零件公开信息的方法可能允许导入的零件提供与MEF意识形态相符的日志配置信息?

1 个答案:

答案 0 :(得分:1)

MEF方式是将日志记录界面导入插件和/或导出您在导出的类中使用自定义属性配置记录器所需的任何元数据。

如果您没有导入日志记录界面界面,我对该日志库(我们使用log4net)并不熟悉您需要的元数据或如何以统一的方式启动日志记录。