由于那里有很多日志框架,我希望为每个应用程序编写一个抽象,以便控制我可以插入的日志框架。这意味着我在例如Log4Net或NLog上不可靠,但我提供了一个接口/抽象,然后在我自己的抽象中提供插件框架。
沿着这些方向的东西(有点简化的mayvbe),我可以传递给任何需要依赖的对象。
interface ILogger {
void LogMessage(string message, Severity severity);
void LogDebug(string message);
void LogInfo(string message);
void LogWarning(string message);
void LogError(string message);
void LogFatal(string message);
}
之后我的计划是编写我想要使用的日志框架的适配器/实现 - 所以我可以在必要时插入任何其他日志框架。
public sealed class Log4NetLogger : ILogger {
/// Implementation and Log4Net specifics here
}
public sealed class NlogLogger : ILogger {
/// Implementation and Log4Net specifics here
}
这些我会通过IoC或资源定位器注入/实例化,具体取决于我正在处理的应用程序的实现细节。
问题:我不知道是否一个好主意?从头开始写这个,考虑可能
另一方面,对我来说的好处是:
任何指南,备注,警告 DO& DONT - 或者可能对现有抽象的引用可能很方便,非常受欢迎!
谢谢, 伊夫
答案 0 :(得分:3)
好吧,在我的热情中,我似乎已经瞥了一眼。我可能找到了一个适合我需求的库,我会在这里发布,以防有人在寻找类似的解决方案:Common Logging framework。
什么是? 提供简单的日志记录抽象,以在不同的日志记录实现之间切换。目前支持log4net,NLog,Microsoft Enterprise Library日志记录,Microsoft Application Insights,Windows的Microsoft事件跟踪和Serilog。此外,Common.Logging附带了一组基类,使得任何日志系统的集成变得轻而易举。〜取自official github repo。
<强>参考强>: