разрешить Microsoft.Extensions.Logging.ILogger из библиотеки lib .NET Core через AspNetCore WebApp с использованием Serilog.AspNetCore и AutofacSerilogIntegration - PullRequest
0 голосов
/ 16 октября 2018

Я получаю следующее исключение:

Не удалось разрешить параметр 'Microsoft.Extensions.Logging.ILogger logger'

"В данный момент (9/ 28/18), Serilog.AspNetCore не участвует в конфигурации DI / OoC "

Можно ли зарегистрировать Serilog.Core.Logger как реализацию Microsoft.Extensions.Logging.ILogger в контейнере Autofac DI дляразрешение в библиотеках классов .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();
    }

}

1 Ответ

0 голосов
/ 19 октября 2018

Попробуйте разрешить ILogger<T> вместо ILogger.Фабрика ведения журнала по умолчанию регистрирует только общую версию.

...