我想在程序中的静态类中添加一个Serilog Log
(DataHelper
是类名):
private readonly ILogger _log = Log.ForContext<DataHelper>();
但这会导致错误消息:
静态类型不能用作类型参数
有道理。那么如何将记录器(在非静态类中可以正常工作)注入此类?
更新:针对您所提到的问题的答案表明这是不可能的。但是根据Serilog的Github,there is a workaround。我只需要log即可知道它正在记录的类。就目前而言,似乎是从主类进行记录。
答案 0 :(得分:1)
关于this issue的讨论讨论了此限制并提出了解决方案。摘要:使用重载ForContext(Type)
,您可以使用typeof(DataHelper)
传递静态类的类型。
答案 1 :(得分:1)
您需要使用接受Type
的重载:
private readonly ILogger _log = Log.ForContext(typeof(DataHelper));