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)); }
static void Main(string[] args) { // First, configure and start a local silo var siloConfig = ClusterConfiguration.LocalhostPrimarySilo(); siloConfig.Globals.RegisterStorageProvider <MemoryStorage>("OrleansStorage"); siloConfig.Globals.Application.SetDefaultCollectionAgeLimit(ageLimit: TimeSpan.FromMinutes(1)); siloConfig.Globals.Application.SetCollectionAgeLimit(type: typeof(LinkStage0Grain), ageLimit: TimeSpan.FromMinutes(1)); siloConfig.Globals.Application.SetCollectionAgeLimit(type: typeof(LinkStage1Grain), ageLimit: TimeSpan.FromMinutes(2)); siloConfig.Globals.Application.SetCollectionAgeLimit(type: typeof(LinkStage2Grain), ageLimit: TimeSpan.FromMinutes(3)); var logger = new Serilog.LoggerConfiguration() .WriteTo.Console() .CreateLogger(); var serilogConsumer = new SerilogConsumer(logger); LogManager.LogConsumers.Add(serilogConsumer); //LogManager.TelemetryConsumers.Add(serilogConsumer); var silo = new SiloHost("TestSilo", siloConfig); silo.InitializeOrleansSilo(); silo.StartOrleansSilo(); Console.WriteLine("Silo started."); // Then configure and connect a client. var clientConfig = ClientConfiguration.LocalhostSilo(); var client = new ClientBuilder().UseConfiguration(clientConfig).Build(); client.Connect().Wait(); Console.WriteLine("Client connected."); //// //// This is the place for your test code. //// //ClientCall(clientConfig, client); Console.WriteLine("\nPress Enter to terminate..."); Console.ReadLine(); // Shut down //client.Close(); silo.ShutdownOrleansSilo(); }