public void WizardLoggingExtensionMethods_SqlLogger()
        {
            var connectionString = "Data Source=.\\sqlexpress;Initial Catalog=Test;Integrated Security=True;Connection Timeout=3";
            var schema           = new SqlLogSchema(connectionString);
            var schemaApply      = new Action <SqlLogSchemaConfig>(s => {
                s.ConnectionString = connectionString;
            });
            var recordVerifier = new MinimumLogLevelVerifier(LogLevel.Debug);

            var con = new SqlConnection(connectionString);

            try
            {
                con.Open();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return;
            }

            var l1 = LoggingWizard.Spell.SqlLogger(schema);
            var l2 = LoggingWizard.Spell.SqlLogger(schemaApply);
            var l3 = LoggingWizard.Spell.SqlLogger(recordVerifier, schemaApply);
            var l4 = LoggingWizard.Spell.SqlLogger(LogLevel.Debug, schemaApply);
            var l5 = LoggingWizard.Spell.SqlLogger(schema, recordVerifier);
            var l6 = LoggingWizard.Spell.SqlLogger(schema, LogLevel.Debug);
            var l7 = LoggingWizard.Spell.SqlLogger(connectionString, recordVerifier);
            var l8 = LoggingWizard.Spell.SqlLogger(connectionString, LogLevel.Debug);
        }
예제 #2
0
        public void LogTableSchema_Default()
        {
            #region Arrange

            var connectionString = "CONNECTION STRING";

            var initScript = new StringBuilder($"IF OBJECT_ID(N'[{SqlLogSchema.DefaultTableName}]', N'U') IS NULL BEGIN ")
                             .Append($"CREATE TABLE [{SqlLogSchema.DefaultTableName}](")
                             .Append("[Id] BIGINT NOT NULL PRIMARY KEY IDENTITY,")
                             .Append("[Timestamp] DATETIME NOT NULL,")
                             .Append("[Message] VARCHAR(MAX) NOT NULL,")
                             .Append("[Exception] VARCHAR(MAX) NULL,")
                             .Append("[Level] INT NOT NULL")
                             .Append(") END")
                             .ToString();

            var record = new LogRecord(
                "msg",
                new System.DateTime(2000, 1, 2, 3, 4, 5),
                LogLevel.Info,
                new NotImplementedException()
                );

            var insertScript = $"INSERT INTO [{SqlLogSchema.DefaultTableName}]([Timestamp], [Message], [Exception], [Level]) VALUES("
                               + $"'{record.Timestamp:yyyy-MM-ddTHH:mm:ss.fff}','{record.Message}','{record.Exception.ToString()}',{(int)record.Level})";

            var defaultColumns = new[] {
                SqlLogSchema.IdColumn,
                SqlLogSchema.TimestampColumn,
                SqlLogSchema.MessageColumn,
                SqlLogSchema.ExceptionColumn,
                SqlLogSchema.LevelColumn
            };

            #endregion Arrange

            #region Act

            var ts          = new SqlLogSchema(connectionString);
            var insertQuery = ts.BuildInsertQuery(record);

            #endregion Act

            #region Assert

            Assert.AreEqual(connectionString, ts.ConnectionString);
            Assert.AreEqual(SqlLogSchema.DefaultTableName, ts.TableName);
            Assert.AreEqual(defaultColumns.Length, ts.Columns.Length);
            Assert.AreEqual(initScript, ts.InitScript);
            Assert.AreEqual(insertScript, insertQuery);

            #endregion Assert
        }
예제 #3
0
        public void LogTableSchema_CustomColumns()
        {
            #region Arrange

            var connectionString = "CONNECTION STRING";

            var newColumns = new[] {
                SqlLogSchema.MessageColumn,
                SqlLogSchema.ExceptionColumn
            };

            var initScript = new StringBuilder($"IF OBJECT_ID(N'[{SqlLogSchema.DefaultTableName}]', N'U') IS NULL BEGIN ")
                             .Append($"CREATE TABLE [{SqlLogSchema.DefaultTableName}](")
                             .Append("[Message] VARCHAR(MAX) NOT NULL,")
                             .Append("[Exception] VARCHAR(MAX) NULL")
                             .Append(") END")
                             .ToString();

            var record = new LogRecord(
                "msg",
                new System.DateTime(2000, 1, 2, 3, 4, 5),
                LogLevel.Info,
                new NotImplementedException()
                );

            var insertScript = $"INSERT INTO [{SqlLogSchema.DefaultTableName}]([Message], [Exception]) VALUES("
                               + $"'{record.Message}','{record.Exception.ToString()}')";

            #endregion Arrange

            #region Act

            var ts          = new SqlLogSchema(connectionString, columns: newColumns);
            var insertQuery = ts.BuildInsertQuery(record);

            #endregion Act

            #region Assert

            Assert.AreEqual(connectionString, ts.ConnectionString);
            Assert.AreEqual(newColumns.Length, ts.Columns.Length);
            Assert.AreEqual(initScript, ts.InitScript);
            Assert.AreEqual(insertScript, insertQuery);

            #endregion Assert
        }
예제 #4
0
        public void LogTableSchema_CustomInitScript()
        {
            #region Arrange

            var connectionString = "CONNECTION STRING";
            var initScript       = "INIT SCRIPT";

            #endregion Arrange

            #region Act

            var ts = new SqlLogSchema(connectionString, initScript: initScript);

            #endregion Act

            #region Assert

            Assert.AreEqual(connectionString, ts.ConnectionString);
            Assert.AreEqual(initScript, ts.InitScript);

            #endregion Assert
        }