private static Microsoft.Extensions.Logging.ILogger GetLogger() { var providers = new LoggerProviderCollection(); Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .WriteTo.Console() .WriteTo.Providers(providers) .CreateLogger(); var services = new ServiceCollection(); services.AddSingleton(providers); services.AddSingleton <ILoggerFactory>(sc => { var providerCollection = sc.GetService <LoggerProviderCollection>(); var factory = new SerilogLoggerFactory(null, true, providerCollection); foreach (var provider in sc.GetServices <ILoggerProvider>()) { factory.AddProvider(provider); } return(factory); }); services.AddLogging(l => l.AddConsole()); var serviceProvider = services.BuildServiceProvider(); var logger = serviceProvider.GetRequiredService <Microsoft.Extensions.Logging.ILogger <Program> >(); return(logger); }
public static IServiceCollection ConfigureLogger(this IServiceCollection serviceCollection, CloudStorageAccount storage) { return(serviceCollection.AddSingleton(x => { return new LoggerFactory().AddSerilog(SerilogLoggerFactory.Create(storage)); })); }
private void InitializeENode(ContainerBuilder builder) { var assemblies = new[] { Assembly.Load("Forum.Commands"), Assembly.Load("Forum.QueryServices"), Assembly.Load("Forum.QueryServices.Dapper"), Assembly.Load("Forum.Web") }; var loggerFactory = new SerilogLoggerFactory() .AddFileLogger("ECommon", "logs\\ecommon") .AddFileLogger("EQueue", "logs\\equeue") .AddFileLogger("ENode", "logs\\enode", minimumLevel: Serilog.Events.LogEventLevel.Debug); ECommon.Configurations.Configuration .Create() .UseAutofac(builder) .RegisterCommonComponents() .UseSerilog(loggerFactory) .UseJsonNet() .RegisterUnhandledExceptionHandler() .CreateENode() .RegisterENodeComponents() .RegisterBusinessComponents(assemblies) .UseEQueue(); }
public void LoggerMessage_IsCorrect(string name, Action <Microsoft.Extensions.Logging.ILogger> logAction, string method, string expectedResult) { global::Serilog.ILogger newLogger = new LoggerConfiguration() .MinimumLevel.Verbose() .WriteTo.InMemory() .CreateLogger(); Log.Logger = newLogger; ILoggerFactory loggerFactory = new SerilogLoggerFactory(); Microsoft.Extensions.Logging.ILogger logger = loggerFactory.CreateLogger("test"); logger.Here(logAction); var result = InMemorySink.Instance.LogEvents.First().RenderMessage(); TestContext.WriteLine($"Method: {method} Template: {InMemorySink.Instance.LogEvents.First().MessageTemplate} Render: {InMemorySink.Instance.LogEvents.First().RenderMessage()}"); var templateFile = Path.Combine(TestContext.CurrentContext.TestDirectory, "templates.txt"); File.AppendAllLines(templateFile, new string[] { $"<tr><td>{method}</td><td>{InMemorySink.Instance.LogEvents.First().RenderMessage()}</td></tr>" }); newLogger = null; Log.CloseAndFlush(); InMemorySink.Instance.Dispose(); Assert.AreEqual(expectedResult, result); }
// Workaround from following GitHub issue on Serilog Sink. // https://github.com/serilog/serilog-sinks-applicationinsights/issues/121 public static IServiceCollection SetupSerilog(this IServiceCollection collection, Action <IServiceProvider, LoggerConfiguration> configureLogger) { var loggerConfiguration = new LoggerConfiguration(); configureLogger(collection.BuildServiceProvider(), loggerConfiguration); Logger logger = loggerConfiguration.CreateLogger(); Log.Logger = logger; collection.AddSingleton <ILoggerFactory>(services => { var factory = new SerilogLoggerFactory(null, true); return(factory); }); var diagnosticContext = new DiagnosticContext(null); collection.AddSingleton(diagnosticContext); collection.AddSingleton <IDiagnosticContext>(diagnosticContext); return(collection); }
private static void ConfigureCompositionRoot( string connectionString, IExecutionContextAccessor executionContextAccessor, ILogger logger, IEventsBus eventsBus, bool runQuartz = true) { var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterModule(new LoggingModule(logger)); var loggerFactory = new SerilogLoggerFactory(logger); containerBuilder.RegisterModule(new DataAccessModule(connectionString, loggerFactory)); containerBuilder.RegisterModule(new ProcessingModule()); containerBuilder.RegisterModule(new EventsBusModule(eventsBus)); containerBuilder.RegisterModule(new MediatorModule()); containerBuilder.RegisterModule(new AuthenticationModule()); containerBuilder.RegisterModule(new OutboxModule()); if (runQuartz) { containerBuilder.RegisterModule(new QuartzModule()); } containerBuilder.RegisterInstance(executionContextAccessor); _container = containerBuilder.Build(); PaymentsCompositionRoot.SetContainer(_container); RunEventsProjectors(); }
private static void InitializeEQueue() { var loggerFactory = new SerilogLoggerFactory() .AddFileLogger("ECommon", "logs\\ecommon") .AddFileLogger("EQueue", "logs\\equeue") .AddFileLogger("ENode", "logs\\enode"); ECommonConfiguration .Create() .UseAutofac() .RegisterCommonComponents() .UseSerilog(loggerFactory) .UseJsonNet() .RegisterUnhandledExceptionHandler() .RegisterEQueueComponents() .BuildContainer(); var storePath = ConfigurationManager.AppSettings["equeueStorePath"]; var nameServerEndpoint = new IPEndPoint(IPAddress.Loopback, ConfigSettings.NameServerPort); var nameServerEndpoints = new List <IPEndPoint> { nameServerEndpoint }; var brokerSetting = new BrokerSetting(false, storePath) { NameServerList = nameServerEndpoints }; brokerSetting.BrokerInfo.ProducerAddress = new IPEndPoint(IPAddress.Loopback, ConfigSettings.BrokerProducerPort).ToAddress(); brokerSetting.BrokerInfo.ConsumerAddress = new IPEndPoint(IPAddress.Loopback, ConfigSettings.BrokerConsumerPort).ToAddress(); brokerSetting.BrokerInfo.AdminAddress = new IPEndPoint(IPAddress.Loopback, ConfigSettings.BrokerAdminPort).ToAddress(); _broker = BrokerController.Create(brokerSetting); ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(Bootstrap).FullName).Info("Broker initialized."); }
static void InitializeENodeFramework() { var assemblies = new[] { Assembly.Load("NoteSample.Domain"), Assembly.Load("NoteSample.Commands"), Assembly.Load("NoteSample.CommandHandlers"), Assembly.GetExecutingAssembly() }; var loggerFactory = new SerilogLoggerFactory() .AddFileLogger("ECommon", "logs\\ecommon") .AddFileLogger("EQueue", "logs\\equeue") .AddFileLogger("ENode", "logs\\enode"); _configuration = ECommonConfiguration .Create() .UseAutofac() .RegisterCommonComponents() .UseSerilog(loggerFactory) .UseJsonNet() .RegisterUnhandledExceptionHandler() .CreateENode() .RegisterENodeComponents() .RegisterBusinessComponents(assemblies) .BuildContainer() .InitializeBusinessAssemblies(assemblies); _eventService = ObjectContainer.Resolve <IEventCommittingService>(); _logger = ObjectContainer.Resolve <ILoggerFactory>().Create("main"); _repository = ObjectContainer.Resolve <IRepository>(); _commandProcessor = ObjectContainer.Resolve <ICommandProcessor>(); Console.WriteLine("ENode started..."); }
public SerilogTypedLogger(Serilog.ILogger logger) { using (var logfactory = new SerilogLoggerFactory(logger)) { this.logger = logfactory.CreateLogger(typeof(T).FullName); } }
//This method makes a service provider which contains all the dependencies of the runner public IServiceProvider Build() { var providers = new LoggerProviderCollection(); Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .WriteTo.MongoDB(Environment.GetEnvironmentVariable("MP_CONNECTIONSTRING") + "/" + Environment.GetEnvironmentVariable("MP_DATABASE"), collectionName: Environment.GetEnvironmentVariable("MP_LOGCOLLECTION")) .WriteTo.Providers(providers) .CreateLogger(); var container = new ServiceCollection(); container.AddSingleton <IApp, App>(); container.AddSingleton <IMessageBroker, RabbitBroker>(); container.AddSingleton <IMessageBrokerConfig, RabbitMQConfig>(); container.AddSingleton <IDockerService, DockerService>(); container.AddSingleton(providers); container.AddSingleton <ILoggerFactory>(sc => { var providerCollection = sc.GetService <LoggerProviderCollection>(); var factory = new SerilogLoggerFactory(null, true, providerCollection); foreach (var provider in sc.GetServices <ILoggerProvider>()) { factory.AddProvider(provider); } return(factory); }); container.AddLogging(); return(container.BuildServiceProvider()); }
public static async Task Main(string[] args) { Log.Logger = SerilogLoggerFactory.CreateLogger(); try { Log.Information($"Starting ratesApi. Environment: '{EnvironmentHelpers.GetEnvironmentName()}'"); var host = CreateHostBuilder(args).Build(); using (var scope = host.Services.CreateScope()) { var context = scope.ServiceProvider.GetRequiredService <RatesDataContext>(); await context.Database.MigrateAsync(); } await host.RunAsync(); } catch (Exception exc) { Log.Fatal(exc, "Error during ratesApi startup."); throw; } finally { Log.CloseAndFlush(); } }
public static IHost CreateHostBuilder(string[] args) { Log.Logger = SetupSerilog(Configuration); // Build the host var host = MsHost.CreateDefaultBuilder(args) .UseServiceProviderFactory(new AutofacServiceProviderFactory()) .ConfigureLogging(SetupLogging) .UseSerilog(dispose: true) .ConfigureWebHostDefaults(wb => wb .UseStartup <Startup>(hostingContext => { hostingContext.Configuration = Configuration; var startupLogger = new SerilogLoggerFactory(Log.Logger).CreateLogger("File"); return(new Startup(hostingContext, startupLogger)); })) .Build(); // At this stage - after ConfigureServices & ConfigureContainer have been called - we can access IServiceProvider. var appContext = host.Services.GetRequiredService <IApplicationContext>(); var providerContainer = (appContext as IServiceProviderContainer) ?? throw new ApplicationException($"The implementation of '${nameof(IApplicationContext)}' must also implement '${nameof(IServiceProviderContainer)}'."); providerContainer.ApplicationServices = host.Services; // At this stage we can set the scoped service container. var engine = host.Services.GetRequiredService <IEngine>(); engine.Scope = new ScopedServiceContainer( host.Services.GetRequiredService <ILifetimeScopeAccessor>(), host.Services.GetRequiredService <IHttpContextAccessor>(), host.Services.AsLifetimeScope()); return(host); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var providers = new LoggerProviderCollection(); Log.Logger = new LoggerConfiguration().ReadFrom.Configuration(Configuration).CreateLogger(); ConfigureCors(services); ConfigureSwagger(services); services.AddSingleton(providers); services.AddSingleton <ILoggerFactory>(sc => { var providerCollection = sc.GetService <LoggerProviderCollection>(); var factory = new SerilogLoggerFactory(null, true, providerCollection); foreach (var provider in sc.GetServices <ILoggerProvider>()) { factory.AddProvider(provider); } return(factory); }); services.AddControllers(); ConfigureDatabase(services); ConfigureCustomServices(services); }
private void InitializeENode( bool useMockEventStore = false, bool useMockPublishedVersionStore = false, bool useMockDomainEventPublisher = false, bool useMockApplicationMessagePublisher = false, bool useMockDomainExceptionPublisher = false) { var connectionString = ConfigurationManager.AppSettings["connectionString"]; var assemblies = new[] { Assembly.GetExecutingAssembly() }; if (_serilogLoggerFactory == null) { _serilogLoggerFactory = new SerilogLoggerFactory(defaultLoggerFileName: "logs\\default") .AddFileLogger("ECommon", "logs\\ecommon") .AddFileLogger("EQueue", "logs\\equeue") .AddFileLogger("ENode", "logs\\enode"); } _enodeConfiguration = ECommonConfiguration .Create() .UseAutofac() .RegisterCommonComponents() .UseSerilog(_serilogLoggerFactory) .UseJsonNet() .RegisterUnhandledExceptionHandler() .CreateENode() .RegisterENodeComponents() .UseEventStore(useMockEventStore) .UsePublishedVersionStore(useMockPublishedVersionStore) .RegisterBusinessComponents(assemblies) .InitializeEQueue() .UseEQueue(useMockDomainEventPublisher, useMockApplicationMessagePublisher, useMockDomainExceptionPublisher) .BuildContainer(); if (!useMockEventStore) { _enodeConfiguration.InitializeSqlServerEventStore(connectionString); } if (!useMockPublishedVersionStore) { _enodeConfiguration.InitializeSqlServerPublishedVersionStore(connectionString); } _enodeConfiguration .InitializeBusinessAssemblies(assemblies) .StartEQueue() .Start(); _commandService = ObjectContainer.Resolve <ICommandService>(); _memoryCache = ObjectContainer.Resolve <IMemoryCache>(); _eventStore = ObjectContainer.Resolve <IEventStore>(); _publishedVersionStore = ObjectContainer.Resolve <IPublishedVersionStore>(); _domainEventPublisher = ObjectContainer.Resolve <IMessagePublisher <DomainEventStreamMessage> >(); _applicationMessagePublisher = ObjectContainer.Resolve <IMessagePublisher <IApplicationMessage> >(); _domainExceptionPublisher = ObjectContainer.Resolve <IMessagePublisher <IDomainException> >(); _logger = ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(BaseTest)); _logger.Info("----ENode initialized."); }
private static void ConfigureLogging(HttpConfiguration httpConfig, IConfiguration appConfiguration) { var logFolder = HostingEnvironment.MapPath("/Logs"); var apiLoggerFactory = new SerilogLoggerFactory(new LoggerConfiguration() .Enrich.With <UtcTimeLogEventEnricher>() .Enrich.WithHttpRequestType() .Enrich.WithHttpRequestClientHostIP() .Enrich.WithHttpRequestClientHostName() .Enrich.WithHttpRequestRawUrl() .Enrich.WithWebApiControllerName() .Enrich.WithWebApiActionName() .WriteTo.Async(a => a.File(Path.Combine(logFolder, $"app-errors.log"), rollingInterval: RollingInterval.Day, outputTemplate: "{UtcTime}|{HttpRequestType}|{HttpRequestRawUrl}|{WebApiController}|{WebApiAction}|{HttpRequestClientHostIP}|{HttpRequestClientHostName}|{Message:lj}{NewLine}{Exception}", shared: true)) .CreateLogger(), true); var logger = apiLoggerFactory.CreateLogger("app-errors"); if (appConfiguration.GetValue("Logging:LogRequests", false)) { httpConfig.MessageHandlers.Add(new RequestLoggerCSV(logFolder, logRequests: true, logResponses: true, logContent: appConfiguration.GetValue("Logging:LogContent", false))); } httpConfig.Services.Replace(typeof(IExceptionLogger), new DefaultExceptionLogger(GetExceptionLoggerAuditEventRepository(logFolder), logger)); }
static void InitializeENodeFramework() { var assemblies = new[] { Assembly.Load("NoteSample.Domain"), Assembly.Load("NoteSample.Commands"), Assembly.Load("NoteSample.CommandHandlers"), Assembly.GetExecutingAssembly() }; var loggerFactory = new SerilogLoggerFactory() .AddFileLogger("ECommon", "logs\\ecommon") .AddFileLogger("EQueue", "logs\\equeue") .AddFileLogger("ENode", "logs\\enode"); _configuration = Configuration .Create() .UseAutofac() .RegisterCommonComponents() .UseSerilog(loggerFactory) .UseJsonNet() .RegisterUnhandledExceptionHandler() .CreateENode() .RegisterENodeComponents() .RegisterBusinessComponents(assemblies) .UseEQueue() .BuildContainer() .InitializeBusinessAssemblies(assemblies) .StartEQueue() .Start(); Console.WriteLine(string.Empty); _logger = ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(Program).Name); _logger.Info("ENode started..."); }
public static IServiceCollection AddCustomizedLogging(this IServiceCollection sc) { var sp = sc.BuildServiceProvider(); var httpAccessor = sp.GetRequiredService <IHttpContextAccessor>(); var correlationAccessor = sp.GetRequiredService <ICorrelationContextAccessor>(); var configuration = sp.GetRequiredService <IOptions <EnvironmentConfiguration> >(); var logLevelStr = configuration.Value.LOG_LEVEL; var logLevel = Enum.TryParse(logLevelStr, out LogEventLevel level) ? level : LogEventLevel.Information; var formatter = new JsonLogFormatter(); var conf = new LoggerConfiguration() .Enrich.FromLogContext() .Enrich.With(new HttpEnricher(httpAccessor, correlationAccessor)) .MinimumLevel.ControlledBy(new LoggingLevelSwitch(logLevel)) .MinimumLevel.Override("CorrelationId", LogEventLevel.Error); conf.WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj}{NewLine}{Exception}"); // Add additional sinks (Azure, logentries, etc) here var serilog = conf.CreateLogger(); Microsoft.Extensions.Logging.ILoggerFactory msLoggerFactory = new SerilogLoggerFactory(serilog); msLoggerFactory.AddProvider(new SerilogLoggerProvider(serilog)); sc.AddSingleton <ILogger>(serilog); sc.AddSingleton(msLoggerFactory).AddSingleton(msLoggerFactory.CreateLogger("PROJECT_NAME")); return(sc); }
static void InitializeENodeFramework() { var assemblies = new[] { Assembly.Load("NoteSample.Domain"), Assembly.GetExecutingAssembly() }; var loggerFactory = new SerilogLoggerFactory() .AddFileLogger("ECommon", "logs\\ecommon") .AddFileLogger("EQueue", "logs\\equeue") .AddFileLogger("ENode", "logs\\enode", minimumLevel: Serilog.Events.LogEventLevel.Error); _configuration = Configuration .Create() .UseAutofac() .RegisterCommonComponents() .UseSerilog(loggerFactory) .UseJsonNet() .RegisterUnhandledExceptionHandler() .CreateENode() .RegisterENodeComponents() .RegisterBusinessComponents(assemblies) .UseEQueue() .BuildContainer() .InitializeBusinessAssemblies(assemblies) .StartEQueue(); Console.WriteLine("ENode started..."); }
private static void ConfigureCompositionRoot( string connectionString, IExecutionContextAccessor executionContextAccessor, ILogger logger, EmailsConfiguration emailsConfiguration, IEventsBus eventsBus, IEmailSender emailSender) { var builder = new ContainerBuilder(); builder.RegisterModule(new LoggingModule(logger.ForContext("Module", "Matches"))); var loggerFactory = new 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.RegisterModule(new IntegrationModule()); //TODO: Add Integration Events Events builder.RegisterInstance(executionContextAccessor); _container = builder.Build(); MatchesCompositionRoot.SetContainer(_container); }
private static void InitializeEQueue() { var loggerFactory = new SerilogLoggerFactory() .AddFileLogger("ECommon", "logs\\ecommon") .AddFileLogger("EQueue", "logs\\equeue") .AddFileLogger("ENode", "logs\\enode"); _ecommonConfiguration = ECommonConfiguration .Create() .UseAutofac() .RegisterCommonComponents() .UseSerilog(loggerFactory) .UseJsonNet() .RegisterUnhandledExceptionHandler() .RegisterEQueueComponents() .BuildContainer(); ConfigSettings.Initialize(); var setting = new NameServerSetting() { BindingAddress = new IPEndPoint(IPAddress.Loopback, ConfigSettings.NameServerPort) }; _nameServer = new NameServerController(setting); ObjectContainer.Resolve <ILoggerFactory>().Create(typeof(Bootstrap).FullName).Info("NameServer initialized."); }
public ILogger CreateLogger(string categoryName) { LogEventLevel eventLevel = _serilogOptions.MinimumLevel.Default; foreach (var overrideOption in _serilogOptions.MinimumLevel.Override) { if (categoryName.StartsWith(overrideOption.Key)) { eventLevel = overrideOption.Value; } } // Chain new loggers to the global loggers with its own switch // taking into accound any "Overrides" var levelSwitch = new LoggingLevelSwitch(eventLevel); _loggerSwitches.GetOrAdd(categoryName, levelSwitch); var serilogger = new Serilog.LoggerConfiguration() .MinimumLevel.ControlledBy(levelSwitch) .WriteTo.Logger(_globalLogger) .CreateLogger(); var factory = new SerilogLoggerFactory(serilogger, true); return(_loggers.GetOrAdd(categoryName, factory.CreateLogger(categoryName))); }
static void Main(string[] args) { SerilogLoggerFactory.CreateDimensionDataConsoleLogger(Startup.ServiceName + "_Host", LogEventLevel.Verbose); string protocol = "http"; string hostname = "+"; int port = 16888; HostFactory.Run( hostConfig => { hostConfig.UseSerilog(); hostConfig.AddCommandLineDefinition("protocol", arg => protocol = arg); hostConfig.AddCommandLineDefinition("hostname", arg => hostname = arg); hostConfig.AddCommandLineDefinition("port", arg => port = int.Parse(arg)); hostConfig.ApplyCommandLine(); hostConfig.Service <TestMicroService>(() => new TestMicroService(protocol, hostname, port)); hostConfig.RunAsNetworkService(); hostConfig.SetServiceName("TestMicroService"); hostConfig.SetDisplayName("Dimension Data - " + Startup.ServiceDescription); hostConfig.SetDescription("Dimension Data - " + Startup.ServiceDescription); }); }
public static IHostBuilder UseSerilog( this IHostBuilder builder, Action <HostBuilderContext, LoggerConfiguration> configureLogger, bool preserveStaticLogger = false, bool writeToProviders = false) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (configureLogger == null) { throw new ArgumentNullException(nameof(configureLogger)); } builder.ConfigureServices((context, collection) => { var loggerConfiguration = new LoggerConfiguration(); LoggerProviderCollection loggerProviders = null; if (writeToProviders) { loggerProviders = new LoggerProviderCollection(); loggerConfiguration.WriteTo.Providers(loggerProviders); } configureLogger(context, loggerConfiguration); var logger = loggerConfiguration.CreateLogger(); Serilog.ILogger registeredLogger = null; if (preserveStaticLogger) { registeredLogger = logger; } else { // Passing a `null` logger to `SerilogLoggerFactory` results in disposal via // `Log.CloseAndFlush()`, which additionally replaces the static logger with a no-op. Log.Logger = logger; } collection.AddSingleton <ILoggerFactory>(services => { var factory = new SerilogLoggerFactory(registeredLogger, true, loggerProviders); if (writeToProviders) { foreach (var provider in services.GetServices <ILoggerProvider>()) { factory.AddProvider(provider); } } return(factory); }); ConfigureServices(collection, logger); }); return(builder); }
private void InitializeENode(IServiceCollection services) { var assemblies = new[] { Assembly.Load("Forum.Commands"), Assembly.Load("Forum.QueryServices"), Assembly.Load("Forum.QueryServices.Dapper"), Assembly.Load("Forum.Web") }; var loggerFactory = new SerilogLoggerFactory() .AddFileLogger("ECommon", "logs\\ecommon") .AddFileLogger("EQueue", "logs\\equeue") .AddFileLogger("ENode", "logs\\enode"); ECommon.Configurations.Configuration .Create() .UseAutofac() .RegisterCommonComponents() .UseSerilog(loggerFactory) .UseJsonNet() .RegisterUnhandledExceptionHandler() .CreateENode() .RegisterENodeComponents() .RegisterBusinessComponents(assemblies) .UseEQueue() .RegisterMvcServices(services) .BuildContainer() .InitializeBusinessAssemblies(assemblies) .StartEQueue(); ObjectContainer.Resolve <ILoggerFactory>().Create(GetType().FullName).Info("ENode initialized."); }
private static void ConfigureCompositionRoot( string connectionString, IExecutionContextAccessor executionContextAccessor, ILogger logger, EmailsConfiguration emailsConfiguration) { var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterModule(new LoggingModule(logger.ForContext("Module", "Meetings"))); var loggerFactory = new SerilogLoggerFactory(logger); containerBuilder.RegisterModule(new DataAccessModule(connectionString, loggerFactory)); containerBuilder.RegisterModule(new ProcessingModule()); containerBuilder.RegisterModule(new EventsBusModule()); containerBuilder.RegisterModule(new MediatorModule()); containerBuilder.RegisterModule(new AuthenticationModule()); containerBuilder.RegisterModule(new OutboxModule()); containerBuilder.RegisterModule(new EmailModule(emailsConfiguration)); containerBuilder.RegisterModule(new QuartzModule()); containerBuilder.RegisterInstance(executionContextAccessor); _container = containerBuilder.Build(); MeetingsCompositionRoot.SetContainer(_container); }
public TypedLoggingComponent(Serilog.ILogger logger) { using (var logfactory = new SerilogLoggerFactory(logger)) { _logger = logfactory.CreateLogger(typeof(T).FullName); } }
private void SetupSerilog() { var loggingPath = Path.Combine(WorkingDirectory, "logging.yaml"); if (!File.Exists(loggingPath)) { // First run, logging.yaml doesn't exist yet. We can not wait for auto-copy as it would be too late. using var stream = typeof(AsyncHelper).Assembly.GetManifestResourceStream("OpenMod.Core.logging.yaml"); using var reader = new StreamReader(stream ?? throw new MissingManifestResourceException("Couldn't find resource: OpenMod.Core.logging.yaml")); var fileContent = reader.ReadToEnd(); File.WriteAllText(loggingPath, fileContent); } var configuration = new ConfigurationBuilder() .SetBasePath(WorkingDirectory) .AddYamlFile("logging.yaml") .AddEnvironmentVariables() .Build(); var loggerConfiguration = new LoggerConfiguration() .ReadFrom.Configuration(configuration); var serilogLogger = Log.Logger = loggerConfiguration.CreateLogger(); m_LoggerFactory = new SerilogLoggerFactory(serilogLogger); m_Logger = m_LoggerFactory.CreateLogger <Runtime>(); }
private static void ConfigureCompositionRoot( string connectionString, IExecutionContextAccessor executionContextAccessor, ILogger logger, EmailsConfiguration emailsConfiguration, string textEncryptionKey, IEmailSender emailSender) { var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterModule(new LoggingModule(logger.ForContext("Module", "UserAccess"))); var loggerFactory = new SerilogLoggerFactory(logger); containerBuilder.RegisterModule(new DataAccessModule(connectionString, loggerFactory)); containerBuilder.RegisterModule(new DomainModule()); containerBuilder.RegisterModule(new ProcessingModule()); containerBuilder.RegisterModule(new EventsBusModule()); containerBuilder.RegisterModule(new MediatorModule()); containerBuilder.RegisterModule(new OutboxModule()); containerBuilder.RegisterModule(new QuartzModule()); containerBuilder.RegisterModule(new EmailModule(emailsConfiguration, emailSender)); containerBuilder.RegisterModule(new SecurityModule(textEncryptionKey)); containerBuilder.RegisterInstance(executionContextAccessor); _container = containerBuilder.Build(); UserAccessCompositionRoot.SetContainer(_container); }
private static void ConfigureContainer( string connectionString, IExecutionContextAccessor executionContextAccessor, ILogger logger, IEventsBus eventsBus) { var containerBuilder = new ContainerBuilder(); containerBuilder.RegisterModule(new LoggingModule(logger)); var loggerFactory = new SerilogLoggerFactory(logger); containerBuilder.RegisterModule(new DataAccessModule(connectionString, loggerFactory)); containerBuilder.RegisterModule(new ProcessingModule()); containerBuilder.RegisterModule(new EventsBusModule(eventsBus)); containerBuilder.RegisterModule(new MediatorModule()); containerBuilder.RegisterModule(new AuthenticationModule()); var domainNotificationsMap = new BiDictionary <string, Type>(); domainNotificationsMap.Add("MeetingGroupProposalAcceptedNotification", typeof(MeetingGroupProposalAcceptedNotification)); containerBuilder.RegisterModule(new OutboxModule(domainNotificationsMap)); containerBuilder.RegisterModule(new QuartzModule()); containerBuilder.RegisterInstance(executionContextAccessor); _container = containerBuilder.Build(); AdministrationCompositionRoot.SetContainer(_container); }
public static IServiceCollection AddDefaultSerilog(this IServiceCollection serviceDescriptors, WebApiConfig apiConfig = null, Action <LoggerConfiguration> configureLogger = null, bool preserveStaticLogger = false, bool writeToProviders = true) { var loggerConfiguration = new LoggerConfiguration(); LoggerProviderCollection loggerProviders = null; if (writeToProviders) { loggerProviders = new LoggerProviderCollection(); loggerConfiguration.WriteTo.Providers(loggerProviders); } apiConfig = apiConfig ?? new WebApiConfig(); configFromWebApiConfig(loggerConfiguration, apiConfig); configureLogger?.Invoke(loggerConfiguration); var logger = loggerConfiguration.CreateLogger(); Serilog.ILogger registeredLogger = null; if (preserveStaticLogger) { registeredLogger = logger; } else { Log.Logger = logger; } // 去除内置的LoggerProvider var removeProviders = serviceDescriptors.Where(x => x.ServiceType == typeof(ILoggerProvider)).ToList(); removeProviders.ForEach(p => { serviceDescriptors.Remove(p); }); serviceDescriptors.AddSingleton <ILoggerFactory>(services => { var factory = new SerilogLoggerFactory(registeredLogger, true, loggerProviders); if (writeToProviders) { foreach (var provider in services.GetServices <ILoggerProvider>()) { factory.AddProvider(provider); } } return(factory); }); // 日志定时清理托管服务 serviceDescriptors.AddHostedService <ClearLogsHostService>(); return(serviceDescriptors); }