public void TableCreatedWithCustomNames() { // arrange var options = new ColumnOptions(); var standardNames = new List <string> { "CustomMessage", "CustomMessageTemplate", "CustomLevel", "CustomTimeStamp", "CustomException", "CustomProperties" }; options.Message.ColumnName = "CustomMessage"; options.MessageTemplate.ColumnName = "CustomMessageTemplate"; options.Level.ColumnName = "CustomLevel"; options.TimeStamp.ColumnName = "CustomTimeStamp"; options.Exception.ColumnName = "CustomException"; options.Properties.ColumnName = "CustomProperties"; // act var logTableName = $"{DatabaseFixture.LogTableName}Custom"; var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, logTableName, 1, TimeSpan.FromSeconds(1), null, true, options); // assert using (var conn = new SqlConnection(DatabaseFixture.MasterConnectionString)) { conn.Execute($"use {DatabaseFixture.Database}"); var logEvents = conn.Query <InfoSchema>($@"SELECT COLUMN_NAME AS ColumnName FROM {DatabaseFixture.Database}.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{logTableName}'"); var infoSchema = logEvents as InfoSchema[] ?? logEvents.ToArray(); foreach (var column in standardNames) { infoSchema.Should().Contain(columns => columns.ColumnName == column); } infoSchema.Should().Contain(columns => columns.ColumnName == "Id"); } }
public void TableCreatedWithCustomNamesSinkOptionsInterface() { // Arrange var columnOptions = new Serilog.Sinks.MSSqlServer.ColumnOptions(); var standardNames = new List <string> { "CustomMessage", "CustomMessageTemplate", "CustomLevel", "CustomTimeStamp", "CustomException", "CustomProperties" }; columnOptions.Message.ColumnName = "CustomMessage"; columnOptions.MessageTemplate.ColumnName = "CustomMessageTemplate"; columnOptions.Level.ColumnName = "CustomLevel"; columnOptions.TimeStamp.ColumnName = "CustomTimeStamp"; columnOptions.Exception.ColumnName = "CustomException"; columnOptions.Properties.ColumnName = "CustomProperties"; // Act using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, new SinkOptions { TableName = DatabaseFixture.LogTableName, BatchPostingLimit = 1, BatchPeriod = TimeSpan.FromSeconds(1), AutoCreateSqlTable = true }, null, columnOptions, null)) { } // Assert VerifyDatabaseColumnsWereCreated(standardNames); }
public void DefaultIdColumn() { // arrange var options = new ColumnOptions(); // act var logTableName = $"{DatabaseFixture.LogTableName}DefaultId"; var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, logTableName, 1, TimeSpan.FromSeconds(1), null, true, options); // assert var idColumnName = "Id"; using (var conn = new SqlConnection(DatabaseFixture.MasterConnectionString)) { conn.Execute($"use {DatabaseFixture.Database}"); var logEvents = conn.Query <InfoSchema>($@"SELECT COLUMN_NAME AS ColumnName FROM {DatabaseFixture.Database}.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{logTableName}'"); var infoSchema = logEvents as InfoSchema[] ?? logEvents.ToArray(); infoSchema.Should().Contain(columns => columns.ColumnName == idColumnName); } // verify Id column has identity property using (var conn = new SqlConnection(DatabaseFixture.LogEventsConnectionString)) { var isIdentity = conn.Query <IdentityQuery>($"SELECT COLUMNPROPERTY(object_id('{logTableName}'), '{idColumnName}', 'IsIdentity') AS IsIdentity"); isIdentity.Should().Contain(i => i.IsIdentity == 1); } }
public void DefaultIdColumnLegacyInterface() { // Arrange var options = new Serilog.Sinks.MSSqlServer.ColumnOptions(); // Act using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, DatabaseFixture.LogTableName, 1, TimeSpan.FromSeconds(1), null, true, options, "dbo", null)) { } // Assert VerifyIdColumnWasCreatedAndHasIdentity(); }
public void TableCreatedWithDefaultNamesLegacyInterface() { // Arrange var options = new Serilog.Sinks.MSSqlServer.ColumnOptions(); var standardNames = new List <string> { "Message", "MessageTemplate", "Level", "TimeStamp", "Exception", "Properties" }; // Act using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, DatabaseFixture.LogTableName, 1, TimeSpan.FromSeconds(1), null, true, options, "dbo", null)) { } // Assert VerifyDatabaseColumnsWereCreated(standardNames); }
public void CustomIdColumnLegacyInterface() { // Arrange var options = new ColumnOptions(); var customIdName = "CustomIdName"; options.Id.ColumnName = customIdName; // Act using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, DatabaseFixture.LogTableName, 1, TimeSpan.FromSeconds(1), null, true, options, "dbo", null)) { } // Assert VerifyIdColumnWasCreatedAndHasIdentity(customIdName); }
public void DefaultIdColumnSinkOptionsInterface() { // Arrange var columnOptions = new Serilog.Sinks.MSSqlServer.ColumnOptions(); // Act using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, new SinkOptions { TableName = DatabaseFixture.LogTableName, BatchPostingLimit = 1, BatchPeriod = TimeSpan.FromSeconds(1), AutoCreateSqlTable = true }, null, columnOptions, null)) { } // Assert VerifyIdColumnWasCreatedAndHasIdentity(); }
public void TableCreatedWithCustomNamesLegacyInterface() { // Arrange var options = new ColumnOptions(); var standardNames = new List <string> { "CustomMessage", "CustomMessageTemplate", "CustomLevel", "CustomTimeStamp", "CustomException", "CustomProperties" }; options.Message.ColumnName = "CustomMessage"; options.MessageTemplate.ColumnName = "CustomMessageTemplate"; options.Level.ColumnName = "CustomLevel"; options.TimeStamp.ColumnName = "CustomTimeStamp"; options.Exception.ColumnName = "CustomException"; options.Properties.ColumnName = "CustomProperties"; // Act using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, DatabaseFixture.LogTableName, 1, TimeSpan.FromSeconds(1), null, true, options, "dbo", null)) { } // Assert VerifyDatabaseColumnsWereCreated(standardNames); }
public void TableCreatedWithDefaultNamesSinkOptionsInterface() { // Arrange var columnOptions = new ColumnOptions(); var standardNames = new List <string> { "Message", "MessageTemplate", "Level", "TimeStamp", "Exception", "Properties" }; // Act using (var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, new SinkOptions { TableName = DatabaseFixture.LogTableName, BatchPostingLimit = 1, BatchPeriod = TimeSpan.FromSeconds(1), AutoCreateSqlTable = true }, null, columnOptions, null)) { } // Assert VerifyDatabaseColumnsWereCreated(standardNames); }
private void SetupSut(bool autoCreateSqlTable = false) { _sinkOptions.AutoCreateSqlTable = autoCreateSqlTable; _sut = new MSSqlServerSink(_sinkOptions, _sinkDependencies); }