在使用依赖注入注册和获取日志服务时,可以在使用日志服务的类的构造函数中增加日志参数,然后在依赖注入服务中注册这个类,当通过容器获取实例时,容器可以将日志服务自动注入。比如下面的类:
namespace ConsoleDemo
{
public class MyLog
{
private ILogger logger;
public MyLog(ILogger<MyLog> logger)
{
this.logger = logger;
}
public void Log(string inf)
{
logger.LogInformation(inf);
}
}
}
还需要进行注册:
private static ServiceProvider GetServiceProvider()
{
var services = new ServiceCollection();
services.AddLogging(configure => configure.AddConsole());
services.AddTransient<MyLog>();
var provider = services.BuildServiceProvider();
return provider;
}
当获取这个类的实例后,可以使用日志服务:
var provider = GetServiceProvider();
var mylog = provider.GetService<MyLog>();
mylog.Log("开始");
也可以将IServiceProvider传入到构造函数,在构造函数中获取实例:
public class MyLog1
{
private ILogger logger;
public MyLog1(IServiceProvider provider)
{
this.logger = provider.GetService(typeof(ILogger<MyLog1>)) as ILogger;
}
public void Log(string inf)
{
logger.LogInformation(inf);
}
}
网友评论