如何在 .NET 6 class 库中初始化 ILogger?
How do I initialize an ILogger in a .NET 6 class library?
我有一个 class 库,供控制台应用程序使用。我现在想通过构造函数注入在我的 class 库中添加一个 ILogger<T>
。我想到了这样的事情:
public class Class1
{
private readonly ILogger<Class1> _logger;
public Class1(ILogger<Class1> logger)
{
_logger = logger;
}
}
然而我不知道如何交出ILogger<T>
。
public class Program
{
public static void Main(string[] args)
{
Class1 clazz = new Class1(?????);
}
}
我们可以尝试使用ServiceCollection
which can be restored from Microsoft.Extensions.DependencyInjection
ServiceCollection
可以将 Class1
class 注册到 DI 容器,如果我们正确注册 class,ILogger<Class1>
可能会自动注入。
var services = new ServiceCollection();
services.AddLogging(configure => configure.AddConsole());
services.AddTransient<Class1>();
ServiceProvider serviceProvider = services.BuildServiceProvider();
Class1 clazz = serviceProvider.GetRequiredService<Class1>();
我建议使用 Microsoft.Extensions.Logging 来实现我们的日志机制,该机制由 Microsoft 提供基础结构默认实现。
此外,许多流行的 open-source 日志项目将支持和扩展 Microsoft.Extensions.Logging
,例如 Serilog.Extensions.Logging,NLog.Extensions.Logging...
这样我们就可以轻松更改不同的记录器架构,如果该架构扩展 Microsoft.Extensions.Logging
。
services.AddLogging(configure => configure.AddNLog());
services.AddLogging(configure => configure.AddSerilog());
我有一个 class 库,供控制台应用程序使用。我现在想通过构造函数注入在我的 class 库中添加一个 ILogger<T>
。我想到了这样的事情:
public class Class1
{
private readonly ILogger<Class1> _logger;
public Class1(ILogger<Class1> logger)
{
_logger = logger;
}
}
然而我不知道如何交出ILogger<T>
。
public class Program
{
public static void Main(string[] args)
{
Class1 clazz = new Class1(?????);
}
}
我们可以尝试使用ServiceCollection
which can be restored from Microsoft.Extensions.DependencyInjection
ServiceCollection
可以将 Class1
class 注册到 DI 容器,如果我们正确注册 class,ILogger<Class1>
可能会自动注入。
var services = new ServiceCollection();
services.AddLogging(configure => configure.AddConsole());
services.AddTransient<Class1>();
ServiceProvider serviceProvider = services.BuildServiceProvider();
Class1 clazz = serviceProvider.GetRequiredService<Class1>();
我建议使用 Microsoft.Extensions.Logging 来实现我们的日志机制,该机制由 Microsoft 提供基础结构默认实现。
此外,许多流行的 open-source 日志项目将支持和扩展 Microsoft.Extensions.Logging
,例如 Serilog.Extensions.Logging,NLog.Extensions.Logging...
这样我们就可以轻松更改不同的记录器架构,如果该架构扩展 Microsoft.Extensions.Logging
。
services.AddLogging(configure => configure.AddNLog());
services.AddLogging(configure => configure.AddSerilog());