要集成NLog,我们想要定义一个接口,并且正在考虑两种方法。 我们正在使用C#。
方法1:
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.
}
方法2:
//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 )
}
问题:
答案 0 :(得分:0)
我的回答并未提供直接解决方案,但仍然......
我使用现有日志框架,其中包含所有接口。其余的是(或应该)配置。
如果你坚持使用自己的界面,那么我认为性能在这里不是问题。您可以将枚举值映射到NLog的相应方法(方法2),也可以直接使用它(方法1)。
毫无疑问,方法2更清洁了。我会稍微改变一下:public interface ILoggingManager
{
void DoLogging(type , LoggingLevel , string, /* optional */ exception )
}
我将描述我在方法2中看到的好处。有时您不知道您将要使用的日志级别是什么。假设您正在检查异常。有时您最终会使用Warn
,有时最终会得到Error
。如果使用方法2,代码重用更简单:只需选择相关的枚举值即可设置。如果您使用方法1,代码重用可能包括将Action
映射到相关方法,并调用它,这使整个事情对于日志记录来说太复杂了......
type
是什么?消费类的类型?