asp.net-core - 利用 Serilog.AspNetCore 和 AutofacSerilogIntegration 通过 AspNetCore WebApp 从 .NET Core 类库解析 Microsoft.Extensions.Logging.ILogger

标签 asp.net-core .net-core autofac serilog

我遇到以下异常:

Cannot resolve parameter 'Microsoft.Extensions.Logging.ILogger logger'

"At the moment (9/28/18), Serilog.AspNetCore doesn't get involved in DI/OoC configuration"

是否可以在 Autofac DI 容器中将 Serilog.Core.Logger 注册为 Microsoft.Extensions.Logging.ILogger 的实现,以便在 .NET Core 类中进行解析图书馆?

这是我当前的实现:

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();
    }

}

最佳答案

尝试解决 ILogger<T>而不是ILogger 。默认日志工厂仅注册通用版本。

关于asp.net-core - 利用 Serilog.AspNetCore 和 AutofacSerilogIntegration 通过 AspNetCore WebApp 从 .NET Core 类库解析 Microsoft.Extensions.Logging.ILogger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52843095/

相关文章:

autofac - 替换 Autofac 中的注册

c# - 如何使用 Localizer 本地化 asp-action

c# - C#(DotNet Core)中指针的 volatile 读/写

c# - 已注册服务中的 Autofac 属性注入(inject)

c# - EF Core - 添加相关实体时出错

c# - 如何在#if 语句中设置.NET Core 进行编译

c# - Autofac - 构建前解决

c# - "Too many open files"和请求缓冲

c# - System.IO.Compression DLL 丢失且可能存在版本冲突

asp.net-core - 带有 json 格式化程序的控制台记录器不会序列化对象