Asp.net core 使用Serilog.AspNetCore和AutoFacseriLoginIntegration,通过AspNetCore WebApp从.NET核心类库解析Microsoft.Extensions.Logging.ILogger
我得到以下例外情况: 无法解析参数“Microsoft.Extensions.Logging.ILogger logger” 是否可以在Autofac DI容器中注册Asp.net core 使用Serilog.AspNetCore和AutoFacseriLoginIntegration,通过AspNetCore WebApp从.NET核心类库解析Microsoft.Extensions.Logging.ILogger,asp.net-core,.net-core,autofac,serilog,Asp.net Core,.net Core,Autofac,Serilog,我得到以下例外情况: 无法解析参数“Microsoft.Extensions.Logging.ILogger logger” 是否可以在Autofac DI容器中注册Serilog.Core.Logger作为Microsoft.Extensions.Logging.ILogger的实现,以便在.NET核心类库中解析 以下是我当前的实现: public class Program { public static int Main(string[] args) {
Serilog.Core.Logger
作为Microsoft.Extensions.Logging.ILogger
的实现,以便在.NET核心类库中解析
以下是我当前的实现:
public class Program
{
public static int Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
//.WriteTo.MSSqlServer(Configuration.GetConnectionString("LogConnection"), "_logs", columnOptions: columnOptions)
.WriteTo.Console()
//.WriteTo.ApplicationInsightsEvents("<YOUR_APPLICATION_INSIGHTS_KEY>")
.CreateLogger();
try
{
Log.Information("Starting web host");
var host = CreateWebHostBuilder(args).Build();
host.Run();
return 0;
}
catch (Exception ex)
{
Log.Fatal(ex, "Host terminated unexpectedly");
return 1;
}
finally
{
Log.CloseAndFlush();
}
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog();
}
public class Startup
{
public IServiceProvider ConfigureServices(IServiceCollection services)
{
...
_builder.Register<ILogger>((c, p) =>
{
return new LoggerConfiguration()
.WriteTo.RollingFile(
AppDomain.CurrentDomain.GetData("DataDirectory").ToString() + "/Log-{Date}.txt")
.CreateLogger();
}).SingleInstance();
}
}
公共类程序
{
公共静态int Main(字符串[]args)
{
Logger.Logger=新的LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override(“Microsoft”,LogEventLevel.Information)
.Enrich.FromLogContext()的
//.WriteTo.MSSqlServer(Configuration.GetConnectionString(“LogConnection”),“_logs”,columnOptions:columnOptions)
.WriteTo.Console()
//.WriteTo.ApplicationInsightsEvents(“”)
.CreateLogger();
尝试
{
日志信息(“启动web主机”);
var host=CreateWebHostBuilder(args.Build();
host.Run();
返回0;
}
捕获(例外情况除外)
{
Log.Fatal(例如,“主机意外终止”);
返回1;
}
最后
{
Log.CloseAndFlush();
}
}
公共静态IWebHostBuilder CreateWebHostBuilder(字符串[]args)=>
WebHost.CreateDefaultBuilder(args)
.UseStartup()
.useserlog();
}
公营创业
{
公共IServiceProvider配置服务(IServiceCollection服务)
{
...
_建造商注册((c,p)=>
{
返回新的LoggerConfiguration()
.WriteTo.RollingFile(
AppDomain.CurrentDomain.GetData(“DataDirectory”).ToString()+“/Log-{Date}.txt”)
.CreateLogger();
}).SingleInstance();
}
}
尝试解析ILogger
而不是ILogger
。默认的日志工厂只注册通用版本。您是否尝试过解析ILogger
而不是普通的ILogger
?ILogger正是我想要的。我还从startup.ConfigureServices中删除了builder.Register。如果你重新发布你的回复作为答案,我会接受,这个问题可以结束了。感谢您的帮助,以及您精彩的博客文章和操作系统库!!!完成!很高兴我能帮忙。