代码之家  ›  专栏  ›  技术社区  ›  RandyDaddis

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

  •  1
  • RandyDaddis  · 技术社区  · 8 年前

    我得到以下例外:

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

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

    Serilog.Core.Logger 作为 Microsoft.Extensions.Logging.ILogger 在Autofac DI容器中进行.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();
        }
    
    }
    
    1 回复  |  直到 8 年前
        1
  •  3
  •   Travis Illig    8 年前

    尝试解决 ILogger<T> ILogger . 默认的日志工厂只注册通用版本。

    推荐文章