代码之家  ›  专栏  ›  技术社区  ›  disasterkid

向静态类添加serilog ilogger

  •  1
  • disasterkid  · 技术社区  · 6 年前

    我想添加一个serilog Log 到我程序中的一个静态类( DataHelper 是类名):

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

    但这会导致错误消息:

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

    这是有道理的。那么,如何将记录器(在非静态类中运行良好)注入该类?

    更新 :对您提到的问题的回答表明这是不可能的。但根据serilog的github, there is a workaround 是的。我只需要日志知道它是从哪个类登录的。现在,它似乎是从主类中记录的。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Tom W    6 年前

    关于 this issue 讨论此限制并提出解决方案。小结:使用过载 ForContext(Type) ,可以使用 typeof(DataHelper) 是的。

        2
  •  1
  •   Nicholas Blumhardt    6 年前

    您需要使用接受 Type 以下内容:

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