【发布时间】:2018-11-07 14:18:03
【问题描述】:
我想像这样将 Serilog Log 添加到我的程序中的静态类中(DataHelper 是类名):
private readonly ILogger _log = Log.ForContext<DataHelper>();
但这会导致错误信息:
静态类型不能用作类型参数
这是有道理的。那么如何将记录器(在非静态类中运行良好)注入这个类?
更新:您提到的问题的答案表明这是不可能的。但根据 Serilog 的 Github,there is a workaround。我只需要 log 就可以知道它正在记录的类。目前,它似乎是从主类记录。
【问题讨论】:
-
@nilsK 您提到的问题的答案表明这是不可能的。但是根据Serilog的Github,有一个办法:github.com/serilog/serilog/issues/886
-
我会做什么,如果你有可能的话,重构 DataHelper 类并将常规对象注册为单例。它将简化使用和可测试性
-
@OlegI 这是否意味着我创建的每个静态类,为了写入日志,都需要变成单例?
-
@Disasterkid 好吧,如果没有简单的解决方法来解决您的问题并且编写日志对您至关重要,那么您可以做出这样的决定
标签: c# logging .net-core serilog