C# 记录mef部件的部件特定错误消息
用导入的零件记录零件特定错误的首选方法是什么?例如,如果您有以下合同:C# 记录mef部件的部件特定错误消息,c#,.net,logging,enterprise-library,mef,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 DoStuffWithE
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();
}
}
}
公共类DoStuffRunner
{
[输入数量(输入类型(输入类型))]
IEnumerable DoStuffPats{get;set;}
//一些循环通过IEnumerable并调用run的方法
公开募捐
{
foreach(我用dostuff零件制作)
{
doit.Run();
}
}
}
在导入程序的执行程序集中,我使用entlib异常处理和记录应用程序块。日志应用程序块配置为向团队发送一般错误消息。我希望能够包括的一些信息是,哪个部分失败了,可能是哪个组收到了电子邮件
这非常简单,可以在app config中进行静态配置,但会导致为添加的每个部分进行1:1的配置,从而无法将dll放入bin中。如果你能控制零件装配中的配置,那就太好了
所以,哪些可能的方法允许部件公开信息,哪些可能的方法允许导入的部件提供符合MEF思想的日志记录配置信息?MEF的方法是将日志记录接口导入插件和/或导出您需要配置日志记录程序的任何元数据导出类上的属性
我对日志库还不够熟悉(我们使用log4net)要知道您需要什么元数据,或者如果您没有导入日志接口,日志记录将如何以统一的方式启动。MEF方法是将日志接口导入插件,和/或通过使用导出类上的自定义属性导出配置日志记录程序所需的任何元数据
我对日志库(我们使用log4net)还不够熟悉,不知道您需要什么元数据,也不知道如果不导入日志接口,日志将如何以统一的方式启动。我最终使用了一个自定义属性和unity截取,将属性“message”值添加到异常数据中。对于part,我使用了一个工厂类,该类向unity容器注册part,并包括策略注入管道。属性导出部件。我使用了一个自定义属性和unity拦截,将属性“message”值添加到异常数据中。对于part,我使用了一个工厂类,该类向unity容器注册part,并包括策略注入管道。属性导出零件。