private static void AddLoggerFactory(IServiceCollection services, IConfiguration configuration, IHostEnvironment hostEnvironment, string serviceName = default) { services.AddSingleton(provider => { var loggerConfiguration = new LoggerConfiguration(); loggerConfiguration .Enrich.FromLogContext() .Enrich.WithExceptionDetails() .MinimumLevel.Verbose() //.MinimumLevel.Information() .MinimumLevel.Override("System", LogEventLevel.Information) .MinimumLevel.Override("Microsoft", LogEventLevel.Information) .WriteTo.Console(); if (!string.IsNullOrWhiteSpace(serviceName)) { loggerConfiguration.Enrich.WithProperty("Service", serviceName); } AddTelemetryConfiguration(configuration, services, provider, hostEnvironment, loggerConfiguration); Logger logger = loggerConfiguration.CreateLogger(); Log.Logger = logger; ILoggerFactory factory = new Serilog.Extensions.Logging.SerilogLoggerFactory(logger, true, null); Proto.Log.SetLoggerFactory(factory); return(factory); }); }
private static void ConfigureCompositionRoot( string connectionString, IExecutionContextAccessor executionContextAccessor, ILogger logger, EmailsConfiguration emailsConfiguration, string textEncryptionKey, IEventsBus eventsBus, IEmailSender emailSender, bool runQuartz = true) { var builder = new ContainerBuilder(); builder.RegisterModule(new LoggingModule(logger.ForContext("Module", "Phrases"))); var loggerFactory = new Serilog.Extensions.Logging.SerilogLoggerFactory(logger); builder.RegisterModule(new DataAccessModule(connectionString, loggerFactory)); builder.RegisterModule(new DomainModule()); builder.RegisterModule(new ProcessingModule()); builder.RegisterModule(new EventsBusModule(eventsBus)); builder.RegisterModule(new MediatorModule()); builder.RegisterModule(new OutboxModule()); builder.RegisterModule(new EmailModule(emailsConfiguration, emailSender)); builder.RegisterModule(new QuartzModule()); builder.RegisterInstance(executionContextAccessor); _container = builder.Build(); PhrasesCompositionRoot.SetContainer(_container); }