Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 使用Serilog.AspNetCore和AutoFacseriLoginIntegration,通过AspNetCore WebApp从.NET核心类库解析Microsoft.Extensions.Logging.ILogger_Asp.net Core_.net Core_Autofac_Serilog - Fatal编程技术网

Asp.net core 使用Serilog.AspNetCore和AutoFacseriLoginIntegration,通过AspNetCore WebApp从.NET核心类库解析Microsoft.Extensions.Logging.ILogger

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) {

我得到以下例外情况:

无法解析参数“Microsoft.Extensions.Logging.ILogger logger”

是否可以在Autofac DI容器中注册
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。如果你重新发布你的回复作为答案,我会接受,这个问题可以结束了。感谢您的帮助,以及您精彩的博客文章和操作系统库!!!完成!很高兴我能帮忙。