事件日志实例与静态方法-哪个更好?

4
当写入事件日志时,我可以创建EventLog的实例,并将其保存为成员变量。每次想记录消息时,都可以调用WriteEntry(string message)方法。
或者,我也可以直接调用静态版本:EventLog.WriteEntry(string source, string message)。
那么,我应该选择哪种方法呢?
在我目前的情况下,我打算使用一个或两个源来自定义日志。
2个回答

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

对于这种情况,最好实现单例模式

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;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接