首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪种设计(模式)适合抽象日志平台?

哪种设计(模式)适合抽象日志平台?
EN

Software Engineering用户
提问于 2015-02-13 18:25:34
回答 2查看 11.2K关注 0票数 6

我需要创建一个简单的系统来抽象日志平台。我的想法是,我希望能够通过一些配置来交换或激活日志平台(nloglog4netenterprise library) (这应该不是问题)。我知道,我需要为我想要支持的每个平台设置一个包装器,以加载必要的dll并创建记录器。

我正在考虑创建一个抽象类或接口,提供最常见的方法,如LogDebugTrace等:

代码语言:javascript
复制
interface ILogger
{
    void Log(...);
    void Debug(...);
    // etc.
}

class NLogPlatform : ILogger
{
    // create nlog, load config etc.
}

class Log4NetPlatform : ILogger
{
    // create log4net, load config etc.
}

class LoggerFactory
{ 
    public static CreateLogger(...)
    {
        // read settings and create a logger.
    }
}

起初,我想到了一个日志提供程序,但是后来我发现提供程序根本不是一个模式,所以我看了一下.NET设计模式,但是这里似乎没有什么是合适的。我错过了什么吗?还是没有什么规律?

我还没有真正开始,因为这一次我宁愿从一开始就朝正确的方向前进,然后再重构几个工具。

请你告诉我,在设计这样一个系统时,我应该考虑什么,以及是否有这样的模式?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2015-02-13 18:55:04

祝贺您,您已经(重新)发现了对象适配器模式。您有一个目标接口(此处:ILogger)和各种适配器类NLogPlatformLog4NetPlatform、…。每个适配器类都符合目标接口,并代理作为成员包含的适配器对象的所有调用。

如果您想更清楚地使用这种模式,我将调用适配器类NLogAdapter等。

使用工厂注入正确的日志适配器完全是正交的,并且是关于依赖反转原则的。

票数 7
EN

Software Engineering用户

发布于 2015-02-13 19:09:49

  1. 这和设计模式无关..。
  2. 这是一个已经解决的问题,自从.Net发明以来,这个问题就一遍又一遍地解决了。
  3. 只需使用Commons.Logging --这是一种可配置的小自由,完全按照您的要求:https://github.com/net-commons/common-logging
票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/273157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档