예제 #1
0
        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);
            });
        }
예제 #2
0
        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);
        }