EventLog实例与静态方法 - 首选项?

时间:2011-11-17 20:18:17

标签: c# event-log

当写入事件日志时,我可以创建一个EventLog实例,将其保存为成员变量,并在每次要记录消息时在其上调用WriteEntry(字符串消息)。

或者,我可以调用静态版本:EventLog.WriteEntry(字符串源,字符串消息)。

我是否应该选择另一种替代方案?

在我目前的情况下,我打算有一个或两个来源的自定义日志。

2 个答案:

答案 0 :(得分:6)

如果您正在编写测试驱动或单元测试代码,则不建议使用静态类。

我将EventLog包装在一个实现通用ILog接口的类中。您可以注入此类或在使用它的每个类中实例化它。如果您需要使用其他一些日志记录方法替换EventLog,这应该为您提供最佳的灵活性。

示例界面:

public interface ILog
{ 
        void Info(string format, params object[] args);

        void Warn(string format, params object[] args);

        void Error(Exception exception);
} 

您可以扩展或更改此选项以创建对您有意义的合同。

答案 1 :(得分:1)

最好在这种情况下实现Singleton模式

class Logger
{
    private static Logger log = null;
    private void Logger()
    {
        setLevel(Logger.INFO);
    }
    public static Logger getLog()
    {
        if (log == null)
        {
            log = new Logger();
        }
        return log;
    }
}