繁体   English   中英

注入 ILogger<t> 进入只需要 ILogger 的构造函数</t>

[英]Inject ILogger<T> into constructor that only expects ILogger

这类似于How to injection named logger generic ILogger<T> as ILogger into constructor using IServiceCollection and NLog

但是我正在寻找使用 Serilog + Autofac 的解决方案。

希望有一个适用于 ASP.net Core 6 和控制台 .NET 6 的解决方案

通常,MEL ILogger 的使用方式如下:


public class MyClass
{
  private readonly ILogger _logger;

  public MyClass(ILogger<MyClass> logger) 
  {
    _logger = logger;
    _logger.LogInformation("Constructor");
  }
}

ILogger<MyOtherClass>ILogger<YetAnotherClass>等任何地方手动键入ILogger<MyClass>很乏味

有没有办法省略<MyClass>部分,但实际上接收ILogger<MyClass>如下所示? (显然在How to injection named logger generic ILogger<T> as ILogger into constructor using IServiceCollection and NLog中,提问者声称有一个使用 Autofac 的解决方案,但我没有足够的声誉在评论中问他)

public class MyClass
{
  private readonly ILogger _logger;

//public MyClass(ILogger<MyClass> logger)
  public MyClass(ILogger logger) // <<<<< notice that ILogger is used, instead of ILogger<T>
  {
    _logger = logger;
    _logger.LogInformation("Constructor");
  }
}

先感谢您。

我认为我的 nuget package 正是您正在寻找的:

在这里您可以阅读有关如何使用它的信息:
https://github.com/gcsizmadia/EgonsoftHU.Extensions.Logging.Serilog.Autofac

你可以在这里下载:
https://www.nuget.org/packages/EgonsoftHU.Extensions.Logging.Serilog.Autofac

我还有一个 nuget package 用于 Microsoft Logging + Autofac 用于相同目的(即省略通用类型参数):
https://github.com/gcsizmadia/EgonsoftHU.Extensions.Logging.Autofac

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM