我有一个类库,由控制台应用程序使用。ILogger<T>我现在想在我的类库中添加通过构造函数注入。我想出了这样的事情:
public class Class1
{
private readonly ILogger<Class1> _logger;
public Class1(ILogger<Class1> logger)
{
_logger = logger;
}
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何才能交出ILogger<T>。
public class Program
{
public static void Main(string[] args)
{
Class1 clazz = new Class1(?????);
}
}
Run Code Online (Sandbox Code Playgroud)
我们可以尝试使用ServiceCollection可以从Microsoft.Extensions.DependencyInjection恢复的
ServiceCollection可以将Class1类注册到 DI 容器,并且ILogger<Class1>如果我们正确注册我们的类,可能会自动注入。
var services = new ServiceCollection();
services.AddLogging(configure => configure.AddConsole());
services.AddTransient<Class1>();
ServiceProvider serviceProvider = services.BuildServiceProvider();
Class1 clazz = serviceProvider.GetRequiredService<Class1>();
Run Code Online (Sandbox Code Playgroud)
我建议使用Microsoft.Extensions.Logging来实现我们的日志机制,该机制提供 Microsoft 的基础结构默认实现。
此外,很多流行的开源日志项目都会支持和扩展,Microsoft.Extensions.Logging例如Serilog.Extensions.Logging、NLog.Extensions.Logging ...
这样我们就可以轻松地更改不同的记录器架构(如果该架构可扩展)Microsoft.Extensions.Logging。
services.AddLogging(configure => configure.AddNLog());
services.AddLogging(configure => configure.AddSerilog());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2981 次 |
| 最近记录: |