static void Main(string[] args) { if (args.Length < 3) { throw new ArgumentException("Must provide a config file, aws profile and path"); } var config = args[0]; var isConsole = args.Length == 4 && args[3].Equals("--console"); var outputTemplate = "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] {SourceContext}: {Message:lj}{NewLine}{Exception}"; if (args.Length == 4 && !args[3].Equals("--console")) { // Args[3] is version number if not --console outputTemplate = "[{Timestamp:yyyy-MM-dd HH:mm:ss} {Level:u3}] (" + args[3] + ") {SourceContext}: {Message:lj}{NewLine}{Exception}"; } Serilog.Formatting.Display.MessageTemplateTextFormatter tf = new Serilog.Formatting.Display.MessageTemplateTextFormatter(outputTemplate, CultureInfo.InvariantCulture); var portingAssistantSink = new PortingAssistantSink(tf); var logConfiguration = new LoggerConfiguration().Enrich.FromLogContext() .MinimumLevel.Debug() .WriteTo.RollingFile( Path.Combine(args[2], "logs", "portingAssistant-assessment-{Date}.log"), outputTemplate: outputTemplate) .WriteTo.Sink(portingAssistantSink); if (isConsole) { logConfiguration = logConfiguration.WriteTo.Console(); } Log.Logger = logConfiguration.CreateLogger(); var portingAssistantPortingConfiguration = JsonSerializer.Deserialize <PortingAssistantPortingConfiguration>(File.ReadAllText(config)); var configuration = new PortingAssistantConfiguration(); configuration.DataStoreSettings.HttpsEndpoint = portingAssistantPortingConfiguration.PortingAssistantConfiguration.DataStoreSettings.HttpsEndpoint; configuration.DataStoreSettings.S3Endpoint = portingAssistantPortingConfiguration.PortingAssistantConfiguration.DataStoreSettings.S3Endpoint; configuration.DataStoreSettings.GitHubEndpoint = portingAssistantPortingConfiguration.PortingAssistantConfiguration.DataStoreSettings.GitHubEndpoint; var serviceCollection = new ServiceCollection(); ConfigureServices(serviceCollection, configuration); try { var application = new Application(serviceCollection, portingAssistantSink); application.SetupConnection(isConsole); application.Start(); } finally { Log.CloseAndFlush(); } }
public Application(IServiceCollection serviceCollection, PortingAssistantSink portingAssistantSink) { _services = serviceCollection.BuildServiceProvider(); _logger = _services.GetRequiredService <ILogger <Application> >(); _connection = BuildConnection(); portingAssistantSink.registerOnData((response) => { _connection.Send("onDataUpdate", response); }); }