【发布时间】:2015-12-21 08:45:06
【问题描述】:
我已经使用StreamWriter 实现了我自己的 C# 记录器类。在我的应用程序中,我有这个记录器的公共静态实例,我可以从应用程序代码的任何部分记录任何内容,例如:
Program.logger.Write(LogLevel.Info, "Log test");
我还有一些在应用程序中使用的 C# dll 库。
问题是,我是否能够将日志记录添加到库函数中并以某种方式将其与应用程序记录器链接?我知道Trace 类,但我不知道如何链接它。我想我必须在库函数中跟踪,然后在应用程序代码中监听这些跟踪,但是如何?
我不想使用任何第三方库进行日志记录。
【问题讨论】:
-
您是否尝试将 Program.logger 的实例传递给您的库的某种初始化方法?
-
该库包含更多类。我必须将记录器实例传递给所有这些实例。它会工作,但我正在寻找一些更优雅和高效的。
-
您可以在库中移动记录器类并像您的程序类现在所做的那样公开实例(可能通过静态变量)当然您应该向主程序提供一个初始化日志的方法班级。在这种模式中,库类知道记录器的静态实例的存在
-
谢谢史蒂夫。我没有像你一样从对面考虑(静态 Logger 实例在库中初始化,而不是在主程序中)。
-
嗯,记录器似乎是每个程序都需要的服务,所以逻辑位置应该在库中,以便其他程序也可以重用