public static ConreignSilo Create(ConreignSiloConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var rootLogger = CreateLoggerConfiguration(configuration.MinimumLogLevel, configuration.LogStorageMongoDbUrl) .CreateLogger() .ForContext(new [] { new PropertyEnricher("ApplicationId", "Conreign.Silo"), new PropertyEnricher("ClusterId", configuration.ClusterId), new PropertyEnricher("InstanceId", configuration.InstanceId) }); var orleansLogger = CreateLoggerConfiguration(LogEventLevel.Warning, configuration.LogStorageMongoDbUrl) .CreateLogger(); // HACK: Side-effects here but what can I do with static classes :( var orleansTelemetryAndLogConsumer = new SerilogConsumer(orleansLogger); SiloStartup.Configuration = configuration; LogManager.LogConsumers.Add(orleansTelemetryAndLogConsumer); LogManager.TelemetryConsumers.Add(orleansTelemetryAndLogConsumer); Log.Logger = rootLogger; return(new ConreignSilo(configuration, rootLogger)); }
public static ConreignSiloConfiguration Load(string baseDirectory, string environment, string[] args = null) { if (string.IsNullOrEmpty(baseDirectory)) { throw new ArgumentException("Base directory cannot be null or empty.", nameof(baseDirectory)); } if (string.IsNullOrEmpty(environment)) { throw new ArgumentException("Environment cannot be null or empty.", nameof(environment)); } var options = new ConreignSiloConfiguration(environment); var builder = new ConfigurationBuilder(); builder.SetBasePath(baseDirectory) .AddJsonFile("silo.config.json", false) .AddJsonFile("silo.secrets.json", true) .AddJsonFile($"silo.{environment}.config.json", true) .AddJsonFile($"silo.{environment}.secrets.json", true) .AddCommandLine(args ?? Array.Empty <string>()) .AddCloudConfiguration(c => c.UseKeysFrom <ConreignSiloConfiguration>()); var configRoot = builder.Build(); configRoot.Bind(options); return(options); }
private ConreignSilo(ConreignSiloConfiguration configuration, ILogger logger) { Configuration = configuration; Logger = logger; }