将Microsoft.Extensions.Logging添加到.NETStandard项目,而不假设依赖注入可用

时间:2017-08-24 14:18:10

标签: c# logging .net-standard .net-standard-2.0

我想支持登录将由.NET Core Console或Web Client使用的 .NETStandard 项目。但是,我不想假设客户端在我想要记录的类的构造函数中使用了一个需要ILogger依赖的构造函数。

如果记录器不存在,我基本上不想因此而失败。

所以我的问题是如何在我的代码中引用ILogger而不将其传递给构造函数?

using Microsoft.Extensions.Logging;

namespace MyApp
{
  public class MyClass
  {
     //slf4net logger implementation 
     private static readonly slf4net.ILogger _slf4netLogger = slf4net.LoggerFactory.GetLogger(typeof(MyClass));

     //Microsoft.Extensions.Logging???
     private static readonly ILogger<MyClass> _logger = ???

     public MyClass()
     {
        //Constructor empty
     }

     public void MyMethod()
     {
        //slf4net logger works like this
        _slf4netLogger.Trace("This got logged");

        //this won't work because the logger was never passed from the constructor
        _logger.LogInformation("A message for the log if one is listening");
     }
   }
}

的引用:

似乎我并不孤单在这里沮丧

  

访问MVC控制器之外的日志记录API

     

好的,这就是新的日志记录API很快成为噩梦的地方。    - https://stackify.com/net-core-loggerfactory-use-correctly/

0 个答案:

没有答案