将Serilog ILogger添加到静态类

时间:2018-11-07 14:18:04

标签: c# logging .net-core serilog

我想在程序中的静态类中添加一个Serilog LogDataHelper是类名):

private readonly ILogger _log = Log.ForContext<DataHelper>();

但这会导致错误消息:

  

静态类型不能用作类型参数

有道理。那么如何将记录器(在非静态类中可以正常工作)注入此类?

更新:针对您所提到的问题的答案表明这是不可能的。但是根据Serilog的Github,there is a workaround。我只需要log即可知道它正在记录的类。就目前而言,似乎是从主类进行记录。

2 个答案:

答案 0 :(得分:1)

关于this issue的讨论讨论了此限制并提出了解决方案。摘要:使用重载ForContext(Type),您可以使用typeof(DataHelper)传递静态类的类型。

答案 1 :(得分:1)

您需要使用接受Type的重载:

private readonly ILogger _log = Log.ForContext(typeof(DataHelper));