0

为了集成 NLog,我们想要定义一个接口,并且正在考虑两种方法。我们正在使用 C#。

方法一:

public interface ILoggingManager
{
    void DoErrorLogging(type , string ) 
    void DoErrorLogging(type , string  , exception ) 

    void DoTraceLogging(type , string ) 
    void DoTrace Logging(type , string  , exception ) 

    // And so on for all the types that Nlog supports.
     .... 
    // Finally would have 10 methods defined in this interface. 
}

方法二:

//Have an Enum defined for the logging levels
public enum LoggingLevel
{
    Error,
    Warn,
    Info,
    Debug,
    Trace
}

public interface ILoggingManager
{
    void DoLogging(type , LoggingLevel , string ) 
    void DoLogging(type , LoggingLevel   , exception ) 
}

问题:

  1. 牢记设计原则(如 SOLID),哪种方法更好?
  2. 就性能而言,哪种方法更好?
4

1 回答 1

0

我的回答没有提供直接的解决方案,但仍然......

我会使用现有的日志框架,其中包括所有接口。其余的是(或应该是)配置。

我建议您使用log4netslf

如果您坚持使用自己的接口,那么我认为性能在这里不再是问题。要么将枚举值映射到 NLog 的适当方法(方法 2),要么直接使用它(方法 1)。

毫无疑问,方法 2 更清洁。我将其更改为:

public interface ILoggingManager
{
    void DoLogging(type , LoggingLevel , string, /* optional */ exception ) 
}

我将描述我在方法 2 中看到的好处。有时您不知道您将要使用的日志记录级别是什么。假设您正在检查异常。有时你最终得到Warn,有时你最终得到Error. 如果您使用方法 2,代码重用会更简单:只需选择相关的枚举值即可。如果您使用方法 1,代码重用可能包括将 an 映射Action到相关方法并调用它,这使得整个事情对于记录来说有点过于复杂......

顺便说一句,type这里是什么?消费阶层的类型?

于 2013-09-30T06:59:25.697 回答