[英]How to inject named logger generic ILogger<T> as ILogger into constructor using IServiceCollection and NLog
[英]Inject ILogger<T> into constructor that only expects ILogger
但是我正在寻找使用 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.