private Task ExecuteLoadItemsCommand() { IsBusy = true; try { LogEntries.Clear(); foreach (var item in LoggerSink.GetMessages()) { switch (ShowOnlyStateMachineLogs) { case true: { if (item.Message.Contains("ActivationStateMachine")) { LogEntries.Add(item); } break; } default: LogEntries.Add(item); break; } } } finally { IsBusy = false; } return(Task.CompletedTask); }
public void SinksScopeCreatedEvent() { // arrange var logger = new FakeLogger <LoggerSink>(); var options = Options.Create(new LoggerSinkOptions { }); var sink = new LoggerSink(logger, options); var evt = new FakeScopeCreatedEvent { ScopeId = Guid.NewGuid(), Name = Guid.NewGuid().ToString(), ParentScopeId = Guid.NewGuid(), Timestamp = DateTimeOffset.Now }; // act sink.Sink(evt); // assert Assert.Collection(logger.Items, x => { Assert.Equal(1, x.EventId.Id); Assert.Equal("ScopeCreated", x.EventId.Name); Assert.Equal(LogLevel.Information, x.LogLevel); Assert.Null(x.Exception); }); }
public void SinksTrackerCancelledEvent() { // arrange var logger = new FakeLogger <LoggerSink>(); var options = Options.Create(new LoggerSinkOptions { }); var sink = new LoggerSink(logger, options); var evt = new FakeTrackerCancelledEvent { ScopeId = Guid.NewGuid(), Timestamp = DateTimeOffset.Now, TrackerId = Guid.NewGuid(), Elapsed = TimeSpan.FromSeconds(123) }; // act sink.Sink(evt); // assert Assert.Collection(logger.Items, x => { Assert.Equal(7, x.EventId.Id); Assert.Equal("TrackerCancelled", x.EventId.Name); Assert.Equal(LogLevel.Error, x.LogLevel); Assert.Null(x.Exception); }); }
public void SinkThrowsOnNullTrackingEvent() { // arrange var logger = new FakeLogger <LoggerSink>(); var options = Options.Create(new LoggerSinkOptions()); var sink = new LoggerSink(logger, options); ITrackingEvent trackingEvent = null; // act var ex = Assert.Throws <ArgumentNullException>(() => sink.Sink(trackingEvent)); // assert Assert.Equal(nameof(trackingEvent), ex.ParamName); }
public void SinkThrowsOnUnknownEvent() { // arrange var logger = new FakeLogger <LoggerSink>(); var options = Options.Create(new LoggerSinkOptions { }); var sink = new LoggerSink(logger, options); var evt = Mock.Of <ITrackingEvent>(); // act var ex = Assert.Throws <InvalidOperationException>(() => sink.Sink(evt)); // assert Assert.Contains(evt.GetType().Name, ex.Message, StringComparison.Ordinal); }
/// <summary> /// Execute the database upgrade. /// </summary> protected override async Task OnRunAsync(ExecutorRunArgs args) { var ls = new LoggerSink(); if (_command.HasFlag(DatabaseExecutorCommand.Drop)) { Logger.Default.Info(string.Empty); Logger.Default.Info(new string('-', 80)); Logger.Default.Info("DB DROP: Checking database existence and dropping where found..."); await TimeExecutionAsync(() => { DropDatabase.For.SqlDatabase(_connectionString, ls); return(Task.FromResult(true)); }).ConfigureAwait(false); } if (_command.HasFlag(DatabaseExecutorCommand.Create)) { Logger.Default.Info(string.Empty); Logger.Default.Info(new string('-', 80)); Logger.Default.Info("DB CREATE: Checking database existence and creating where not found..."); await TimeExecutionAsync(() => { EnsureDatabase.For.SqlDatabase(_connectionString, ls); return(Task.FromResult(true)); }).ConfigureAwait(false); } if (_command.HasFlag(DatabaseExecutorCommand.Migrate)) { Logger.Default.Info(string.Empty); Logger.Default.Info(new string('-', 80)); Logger.Default.Info("DB MIGRATE: Migrating the database..."); Logger.Default.Info($"Probing for embedded resources: {(string.Join(", ", GetNamespacesWithSuffix($"{MigrationsNamespace}.*.sql")))}"); DatabaseUpgradeResult?result = null; await TimeExecutionAsync(() => { result = DeployChanges.To .SqlDatabase(_connectionString) .WithScripts(GetMigrationScripts(_assemblies)) .WithoutTransaction() .LogTo(ls) .Build() .PerformUpgrade(); return(Task.FromResult(result.Successful)); }).ConfigureAwait(false); if (!result !.Successful) { Logger.Default.Exception(result.Error); return; } } if (_command.HasFlag(DatabaseExecutorCommand.CodeGen)) { Logger.Default.Info(string.Empty); Logger.Default.Info(new string('-', 80)); Logger.Default.Info("DB CODEGEN: Code-gen database objects..."); CodeGenConsole.LogCodeGenExecutionArgs(_codeGenArgs); if (!await TimeExecutionAsync(async() => { var em = ExecutionManager.Create(() => new CodeGenExecutor(_codeGenArgs)); await em.RunAsync().ConfigureAwait(false); return(em.StopExecutor?.Exception == null); }).ConfigureAwait(false)) { return; } } if (_command.HasFlag(DatabaseExecutorCommand.Schema)) { Logger.Default.Info(string.Empty); Logger.Default.Info(new string('-', 80)); Logger.Default.Info("DB SCHEMA: Drops and creates the database objects..."); if (!await TimeExecutionAsync(() => DropAndCreateAllObjectsAsync(new string[] { "dbo", "Ref" })).ConfigureAwait(false)) { return; } } if (_command.HasFlag(DatabaseExecutorCommand.Reset)) { Logger.Default.Info(string.Empty); Logger.Default.Info(new string('-', 80)); Logger.Default.Info("DB RESET: Resets database by dropping data from all tables..."); if (!await TimeExecutionAsync(() => DeleteAllAndResetAsync()).ConfigureAwait(false)) { return; } } if (_command.HasFlag(DatabaseExecutorCommand.Data)) { Logger.Default.Info(string.Empty); Logger.Default.Info(new string('-', 80)); Logger.Default.Info("DB DATA: Insert or merge the embedded YAML data..."); if (!await TimeExecutionAsync(() => InsertOrMergeYamlDataAsync()).ConfigureAwait(false)) { return; } } if (_command.HasFlag(DatabaseExecutorCommand.ScriptNew)) { Logger.Default.Info(string.Empty); Logger.Default.Info(new string('-', 80)); Logger.Default.Info("DB SCRIPTNEW: Creating a new SQL script from embedded template..."); if (!await TimeExecutionAsync(() => CreateScriptNewAsync()).ConfigureAwait(false)) { return; } } ReturnCode = 0; }
public static Logger Metrics( this LoggerSink sink, int days = -1) { const string logFileExtension = ".yml"; }