单例或静态记录器?

时间:2012-12-10 20:19:30

标签: c#

我当前的C#应用​​程序是单个可执行文件(EXE)和一些DLL(因此有多个二进制文件),我想创建一个LOGGER(一些简单的自定义记录器,无论从哪里调用,都会写入单个文本文件 - 这应该在所有二进制文件(exe和dll)中都可用 - 请注意它是一个单线程应用程序。

现在我有一个DLL(Logger),它有一个类(Log),带有一个记录的方法(trace),每个项目都添加了对这个DLL(Logger)的引用并创建了自己的实例(传入一个文件) name)然后调用.Trace(...)函数 - 工作正常...

但我宁愿不必创建许多不同的跟踪文件(每个项目至少一个),每次看起来重复时都必须创建一个新的Logger实例...所以我正在研究创建一个STATIC记录器类或使用一个单身......我只是不确定哪个最好,为什么......

我希望有人可以指出我在这方面的正确方向,创建一个记录器类(它将是它自己的DLL)的最佳方法是什么,将被许多项目(引用)使用,它们应该全部写入同一个日志文件......?

非常感谢任何帮助。 谢谢,

1 个答案:

答案 0 :(得分:4)

您可以在SingletonStatic记录器之间进行选择,方法与您总是在两者之间进行选择:您希望能够覆盖方法(或使用{{ 1}}接口)?如果使用单例,则可以覆盖更改功能的方法。您甚至可以在界面后面抽象出行为。

使用静态类,您现在并且永远与该类绑定,任何更改都会影响每个人。

在处理我自己的系统时,我已经转向单例实例化对象。它提供了静态类不具备的灵活性。