【发布时间】:2022-08-22 05:56:58
【问题描述】:
但是我正在寻找使用 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<MyClass> 到处都是 ILogger<MyOtherClass>, ILogger<YetAnotherClass>
有没有办法省略 <MyClass> 部分,但实际上收到 ILogger<MyClass> 如下所示? (显然在How to inject 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\");
}
}
先感谢您。
-
\"有没有办法省略 <MyClass> 部分,但实际上接收 ILogger<MyClass> 如下所示?\"- 不在 .NET 中使用股票
Microsoft.Extensions.DependencyInjection,不。 -
@Dai 如果我们不使用股票
Microsoft.Extensions.DependencyInjection怎么样? -
看起来这里给出了几个提议的 AutoFac / NLog 解决方案:stackoverflow.com/questions/20847068/… 也许您可以将它们调整为 Serilog
标签: c# .net-core dependency-injection autofac serilog