如何使用日志组件的灵活性

时间:2015-04-17 07:42:53

标签: c# logging plugin-architecture

我的团队正在开发一个插件项目,其中主机应用程序协调插件工作(每个插件都有一个特定的功能,将在一个单独的线程上执行)。我正在编写Host应用程序并定义IPlugin接口;其他开发人员将参考我的IPlugin界面并开发他的插件 并且我的团队遇到了问题:一些开发人员使用Nlog来记录他们的插件工作,但其他开发人员使用Log4Net。 我的问题是:如何让每个插件都可以使用它喜欢使用的日志记录组件? 谢谢!

1 个答案:

答案 0 :(得分:0)

所以说你做了一个界面:

interface ILoggerPlugin
{
    void Log(LogInfo info);
}

以及所有信息的课程

class LogInfo
{
    public string Application;
    public Exception LoggedException;
}

现在,如果您切换接口并要求所有开发人员遵循这一点,那么所有其他位将被抽象。插件最终用户不必知道正在使用什么作为实现。天气NLog或Log4Net。

我们已经实现了非常类似的东西。最重要的是,我们还有一个目标变量指向数据库,一个文件和/或电子邮件用于关键数据。