然而,我正在寻找一个使用Serilog + Autofac的解决方案。
希望有一个同时适用于ASP.net核心6和控制台.NET 6的解决方案
通常,MEL ILogger是这样使用的:
public class MyClass
{
private readonly ILogger _logger;
public MyClass(ILogger<MyClass> logger)
{
_logger = logger;
_logger.LogInformation("Constructor");
}
}手动在任何地方输入ILogger<MyClass> (如ILogger<MyOtherClass>、ILogger<YetAnotherClass> )都很繁琐。
是否有一种方法可以省略<MyClass>部分,但实际上可以像下面这样接收ILogger<MyClass>?(显然在How to inject named logger generic ILogger 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");
}
}提前谢谢你。
发布于 2022-08-21 21:56:58
我想我的nuget套餐正是你要找的:
在这里,您可以了解如何使用它:
https://github.com/gcsizmadia/EgonsoftHU.Extensions.Logging.Serilog.Autofac
您可以从这里下载:
https://www.nuget.org/packages/EgonsoftHU.Extensions.Logging.Serilog.Autofac
我还有一个用于Microsoft Logging + Autofac的nuget包,用于同样的目的(即省略泛型类型参数):
https://github.com/gcsizmadia/EgonsoftHU.Extensions.Logging.Autofac
https://stackoverflow.com/questions/73287772
复制相似问题