c# - 将记录器作为单例是一种好习惯吗?

标签 c# .net logging dependency-injection singleton

我习惯于将记录器传递给构造函数,例如:

public class OrderService : IOrderService {
     public OrderService(ILogger logger) {
     }
}

但这很烦人,所以我已经用了一段时间了:

private ILogger logger = NullLogger.Instance;
public ILogger Logger
{
    get { return logger; }
    set { logger = value; }
}

这也越来越烦人了——它并不枯燥,我需要在每节课上重复这个。我可以使用基类,但话又说回来——我正在使用 Form 类,所以需要 FormBase 等。 所以我认为,暴露带有 ILogger 的单例有什么缺点,所以每个人都会知道从哪里获取记录器:

    Infrastructure.Logger.Info("blabla");

更新:正如 Merlyn 正确注意到的那样,我应该提到,在第一个和第二个示例中我使用的是 DI。

最佳答案

我在我的依赖注入(inject)容器中放置了一个记录器实例,然后将记录器注入(inject)到需要一个记录器的类中。

关于c# - 将记录器作为单例是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8472678/

相关文章:

C#保存多个值

c# - XML 下载适用于模拟器,但不适用于手机

c# - 如何创建应该在 C#.net 中使用的 python Dll 文件?

c# - 如何将 Expression 转换为 MethodBuilder 实例方法?

用于记录每一行代码的 C++ 宏

logging - ASP.NET Core日志记录-筛选出系统项目

c# - 如何知道浏览器是否有 PDF 查看器?

c# - 更快的算法来改变位图中的色相/饱和度/亮度

.net - 为什么在 VBScript 中使用 `For Each` 迭代 Hashtable 不起作用?

java - 如何知道什么时候日志消息过多?