Example #1
0
        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));
        }
Example #2
0
        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);
        }
Example #3
0
 private ConreignSilo(ConreignSiloConfiguration configuration, ILogger logger)
 {
     Configuration = configuration;
     Logger        = logger;
 }