Ejemplo n.º 1
0
        public void SqlLoggerInvalidConnectionStringProcedure()
        {
            DateTime testStart = DateTime.Now;

            Log.DefaultMemoryLogger.ValidLevels = LogLevels.All;

            // Create a new SQL logger
            SqlLogger sqlLogger = new SqlLogger("Test SQL Logger", Guid.NewGuid(), ConnectionStringInvalid);

            // Add the SQL logger
            Log.GetOrAddLogger(sqlLogger);

            AddTestLogItems(testStart);

            Thread.Sleep(15000);

            // Now retrieve the logs.
            IEnumerable <Log> logs = Log.GetForward(testStart, 10);

            Assert.IsTrue(
                logs.Any(l => l.Level == LogLevel.Critical) &&
                logs.Any(
                    l =>
                    l.Level == LogLevel.Information && l.ExceptionType != null &&
                    l.ExceptionType.Equals("System.Data.SqlClient.SqlException")));
        }
Ejemplo n.º 2
0
        public override DataTable GetDataTable(string Sql)
        {
            try
            {
                SqlLogger.WriteSql(Sql);

                MySqlDataAdapter adapter = new MySqlDataAdapter(Sql, conn);

                DataSet ds = new DataSet();
                conn.Open();
                ds.EnforceConstraints = false;
                adapter.FillSchema(ds, SchemaType.Source, "table");
                adapter.Fill(ds, "table");
                conn.Close();
                return(ds.Tables[0]);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                conn.Close();
            }
        }
Ejemplo n.º 3
0
        internal ITransaction GetTransactionRepository()
        {
            ITransaction result = null;

            switch (_config.LoggerType)
            {
            case LoggingTypeModel.LogOutputType.TextFile:
                result = new TextLogger
                {
                    LogOutputFileLocation = _config.Text.FileInformation.LogFileLocation,
                    LogOutputFileName     = _config.Text.FileInformation.LogFileName
                };
                break;

            case LoggingTypeModel.LogOutputType.SQL:
                result = new SqlLogger();
                break;

            case LoggingTypeModel.LogOutputType.SQLite:
                result = new SqliteLogger();
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            return(result);
        }
Ejemplo n.º 4
0
        public override int ExecuteSql(string sql, QueryParameterCollection parameters = null)
        {
            lock (this) // although sqlite3 is thread-safe, we need to make sure that the last_insert_rowid is correct
            {
                var stopwatch = SqlLogger != null?Stopwatch.StartNew() : null;

                var stmt = CreateCommand(sql, parameters);

                try
                {
                    int returnCode = SQLitePCL.raw.sqlite3_step(stmt);

                    if (returnCode == SQLitePCL.raw.SQLITE_ROW)
                    {
                        return(0); // quietly eat any rows being returned
                    }
                    if (returnCode != SQLitePCL.raw.SQLITE_DONE)
                    {
                        throw new SqliteException((SqliteReturnCode)returnCode, (SqliteExtendedErrorCode)SQLitePCL.raw.sqlite3_extended_errcode(DbHandle), SQLitePCL.raw.sqlite3_errmsg(DbHandle).utf8_to_string());
                    }

                    _lastRowId.Value = SQLitePCL.raw.sqlite3_last_insert_rowid(DbHandle);

                    return(SQLitePCL.raw.sqlite3_changes(DbHandle));
                }
                finally
                {
                    SQLitePCL.raw.sqlite3_finalize(stmt);

                    SqlLogger?.LogSql(sql, parameters?.ToDictionary(p => SqlDialect.CreateParameterExpression(p.Name), p => p.Value), stopwatch?.Elapsed ?? TimeSpan.Zero);
                }
            }
        }
Ejemplo n.º 5
0
    public static void Update <T>(this ISqlConnectionProvider sqlConnectionProvider,
                                  T objectToUpdate,
                                  Expression <Func <T, object> > keyProperties = null,
                                  string tableName        = null,
                                  string schemaName       = null,
                                  bool processColumnNames = true)
    {
        tableName = SqlTextFunctions.GetTableName(objectToUpdate.GetType(), tableName, schemaName);

        using (var myConnection = sqlConnectionProvider.ToSqlConnection())
        {
            using (var myCommand = new SqlCommand {
                Connection = myConnection
            })
            {
                var setClauseProperties   = SqlClrHelpers.GetRelevantPropertyInfos(objectToUpdate, null);
                var whereClauseProperties = SqlClrHelpers.GetPropertiesFromObject(objectToUpdate, keyProperties);
                SqlTextFunctions.UnUnderscoreColumnNames = processColumnNames;
                BuildOutUpdateCommand(objectToUpdate,
                                      tableName,
                                      setClauseProperties,
                                      whereClauseProperties,
                                      myCommand,
                                      processColumnNames);
                SqlTextFunctions.UnUnderscoreColumnNames = true;
                myConnection.Open();
                SqlLogger.LogSqlCommand(myCommand);
                myCommand.ExecuteNonQuery();
                myConnection.Close();
            }
        }
    }
Ejemplo n.º 6
0
        private static SqlLogger Init()
        {
            var logger = new SqlLogger();

            var evidence = AppDomain.CurrentDomain.Evidence;
            //CallContext.LogicalSetData(ContextName, logger);

            return logger;
        }
Ejemplo n.º 7
0
        public SqlLogger Init()
        {
            var logger = new SqlLogger();
#if K10
            _logger.Value = logger;
#else
            CallContext.LogicalSetData(ContextName, logger);
#endif
            return logger;
        }
        private static SqlLogger Init()
        {
            var logger = new SqlLogger();
#if DNXCORE50
            _logger.Value = logger;
#else
            CallContext.LogicalSetData(ContextName, logger);
#endif
            return logger;
        }
Ejemplo n.º 9
0
        private static SqlLogger Init()
        {
            var logger = new SqlLogger();

            var evidence = AppDomain.CurrentDomain.Evidence;

            //CallContext.LogicalSetData(ContextName, logger);

            return(logger);
        }
Ejemplo n.º 10
0
        private static SqlLogger Init()
        {
            var logger = new SqlLogger();

#if DNXCORE50
            _logger.Value = logger;
#else
            CallContext.LogicalSetData(ContextName, logger);
#endif
            return(logger);
        }
Ejemplo n.º 11
0
        public override object ExecuteDataReader(string Sql)
        {
            SqlLogger.WriteSql(Sql);
            MySqlCommand cmd = conn.CreateCommand();

            cmd.CommandText = Sql;
            conn.Open();
            //cmd.ExecuteNonQuery();

            return(cmd.ExecuteReader());
        }
Ejemplo n.º 12
0
        public SqlLogger Init()
        {
            var logger = new SqlLogger();

#if ASPNETCORE50
            _logger.Value = logger;
#else
            CallContext.LogicalSetData(ContextName, logger);
#endif
            return(logger);
        }
Ejemplo n.º 13
0
        private static void DemoSqlLogger()
        {
            Console.Write("using file logger ... ");

            var logger = new SqlLogger();

            logger.Log("test entry 1");
            logger.Log("test entry 2", LogLevel.Verbose);
            logger.Log("test entry 3", LogLevel.Verbose, "example category");

            Console.WriteLine("log saved to database");
        }
Ejemplo n.º 14
0
        public void SqlLoggerInvalidGetStoredProcedure()
        {
            DateTime testStart = DateTime.Now;

            Log.DefaultMemoryLogger.ValidLevels = LogLevels.All;

            // Create a new SQL logger
            SqlLogger sqlLogger = new SqlLogger(
                "Test SQL Logger", Guid.NewGuid(), ConnectionString, getStoredProcedure: Guid.NewGuid().ToString());

            // Add the SQL logger
            Log.GetOrAddLogger(sqlLogger);

            AddTestLogItems(testStart);
        }
Ejemplo n.º 15
0
        public ExecutionContext Prepare(string sql, ParameterContext parameterContext)
        {
            var cloneParameterContext = CloneParameters(parameterContext);
            var routeContext          = ExecuteRoute(sql, cloneParameterContext);
            ExecutionContext result   = new ExecutionContext(routeContext.GetSqlCommandContext());

            var executionUnits = ExecuteRewrite(sql, cloneParameterContext, routeContext);

            result.GetExecutionUnits().AddAll(executionUnits);
            if (true)
            {
                SqlLogger.LogSql(sql, false, result.GetSqlCommandContext(), result.GetExecutionUnits());
            }
            return(result);
        }
    public static IEnumerable <T> MyQuery <T>(this ISqlConnectionProvider sqlConnectionProvider,
                                              string whereClause = null,
                                              string tableName   = null,
                                              string schemaName  = null)
    {
        whereClause = whereClause ?? "1 = 1";
        var selectClause = GenerateSelectClause <T>();

        tableName = SqlTextFunctions.GetTableName(typeof(T), tableName, schemaName);
        var sqlStatement = $"SELECT {selectClause} FROM {tableName} WHERE {whereClause}";

        SqlLogger.LogSqlStatement(sqlStatement);
        var results = sqlConnectionProvider.Query <T>(sqlStatement).ToList();

        return(results);
    }
Ejemplo n.º 17
0
        public void Dispose_100VariousLogsRaised_NoExceptionsThrown()
        {
            // Arrange
            var logger = new SqlLogger(new AzureLoggerSettingsConfiguration(), new NullCorrelationIdHelper());

            for (int i = 0; i < 100; i++)
            {
                switch (i % 5)
                {
                case 0:
                    logger.LogDebug(string.Format("Test run index {0}", i), metaData: new Dictionary <string, object> {
                        { "accountId", i }
                    });
                    break;

                case 1:
                    logger.LogError(string.Format("Test run index {0}", i), metaData: new Dictionary <string, object> {
                        { "teamId", i }
                    });
                    break;

                case 2:
                    logger.LogFatalError(string.Format("Test run index {0}", i), metaData: new Dictionary <string, object> {
                        { "userId", i }
                    });
                    break;

                case 3:
                    logger.LogInfo(string.Format("Test run index {0}", i), metaData: new Dictionary <string, object> {
                        { "companyId", i }
                    });
                    break;

                case 4:
                    logger.LogError(string.Format("Test run index {0}", i), metaData: new Dictionary <string, object> {
                        { "jobId", i }
                    });
                    break;
                }
            }

            // Act
            logger.Dispose();

            // Assert
            // No exception thrown
        }
Ejemplo n.º 18
0
        public override IEnumerable <Dictionary <string, object> > ExecuteSqlReader(string sql, QueryParameterCollection parameters)
        {
            var stopwatch = SqlLogger != null?Stopwatch.StartNew() : null;

            try
            {
                BeginTransaction(IsolationLevel.None);

                List <Dictionary <string, object> > records = new List <Dictionary <string, object> >();

                using (var cmd = CreateCommand(sql, parameters, CommandType.Text))
                {
                    using (var reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            Dictionary <string, object> rec = new Dictionary <string, object>();

                            for (int i = 0; i < reader.FieldCount; i++)
                            {
                                string fieldName = reader.GetName(i);

                                if (reader.IsDBNull(i))
                                {
                                    rec[fieldName] = null;
                                }
                                else
                                {
                                    rec[fieldName] = reader.GetValue(i);
                                }
                            }

                            records.Add(rec);
                        }
                    }
                }

                return(records);
            }
            finally
            {
                CommitTransaction();

                SqlLogger?.LogSql(sql, parameters?.ToDictionary(p => SqlDialect.CreateParameterExpression(p.Name), p => p.Value), stopwatch?.Elapsed ?? TimeSpan.Zero);
            }
        }
Ejemplo n.º 19
0
        internal ILogger GetLoggerRepository()
        {
            ILogger repo;

            switch (_config.LoggerType)
            {
            case LoggingTypeModel.LogOutputType.TextFile:
                var textOutput = new DirectoryInfo(_config.Text.FileInformation.LogFileLocation);
                if (!textOutput.Exists)
                {
                    textOutput.Create();
                }
                repo = new TextLogger
                {
                    LogOutputFileLocation = _config.Text.FileInformation.LogFileLocation,
                    LogOutputFileName     = _config.Text.FileInformation.LogFileName,
                    LoggingLevel          = _config.LoggingLevel
                };
                break;

            case LoggingTypeModel.LogOutputType.SQL:
                repo = new SqlLogger()
                {
                    LoggingLevel = _config.LoggingLevel
                };
                break;

            case LoggingTypeModel.LogOutputType.SQLite:
                var sqliteOutput = new DirectoryInfo(_config.SQLite.ServerInformation.LogFileLocation);
                if (!sqliteOutput.Exists)
                {
                    sqliteOutput.Create();
                }
                repo = new SqliteLogger()
                {
                    LoggingLevel = _config.LoggingLevel
                };
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(repo);
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Load global configurations.
        /// </summary>
        private static void Init()
        {
            Logger = new TraceListenerLogger();

            // Load saved state
            try
            {
                _singleInstance = AppSettings.Get <bool>(Constants.Settings.SingleInstance);

                var sqlLogLevel     = AppSettings.Get <bool>(Constants.Settings.SqlLoggingEnabled) ? LogLevel.All : LogLevel.None;
                var sqlLogRetention = AppSettings.Get <int?>(Constants.Settings.SqlLoggingRetention);
                var sqlLogDirectory = AppSettings.GetOrDefault(Constants.Settings.SqlLoggingDirectory, Path.GetFullPath(Path.Combine(DataDirectory, Constants.Defaults.SqlLoggingDirectory)));
                SqlLogger = new SqlLogger(sqlLogDirectory, sqlLogRetention, sqlLogLevel);
            }
            catch (Exception e)
            {
                Logger.Warn($"Failed to apply AppSettings. Error: {e}");
            }
        }
Ejemplo n.º 21
0
        public override int ExecuteProcedure(string procName, QueryParameterCollection parameters = null)
        {
            var stopwatch = SqlLogger != null?Stopwatch.StartNew() : null;

            try
            {
                BeginTransaction(IsolationLevel.None);

                using (var cmd = CreateCommand(procName, parameters, CommandType.StoredProcedure))
                {
                    return(cmd.ExecuteNonQuery());
                }
            }
            finally
            {
                CommitTransaction();

                SqlLogger?.LogSql("EXEC " + procName, parameters?.ToDictionary(p => SqlDialect.CreateParameterExpression(p.Name), p => p.Value), stopwatch?.Elapsed ?? TimeSpan.Zero);
            }
        }
Ejemplo n.º 22
0
        public override object Execute(string Sql)
        {
            Object lastInsertID = null;

            try
            {
                if (Sql != "")
                {
                    SqlLogger.WriteSql(Sql);
                    MySqlCommand cmd = conn.CreateCommand();
                    cmd.CommandText    = Sql;
                    cmd.CommandTimeout = (this.CommandTimeOut != -1) ? this.CommandTimeOut : cmd.CommandTimeout;
                    conn.Open();
                    //cmd.ExecuteNonQuery();

                    lastInsertID = cmd.ExecuteScalar();
                    conn.Close();
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("foreign key constraint fails"))
                {
                    throw new Exception("Kan niet verwijderen, want er zijn nog gerelateerde gegevens.", ex);
                }
                else if (ex.Message.Contains("Duplicate entry"))
                {
                    throw new Exception("Kan niet opslaan, want een gegeven is niet uniek. Zie de volgende melding: " + ex.Message, ex);
                }
                throw ex;
            }
            finally
            {
                conn.Close();
            }
            if (lastInsertID != null && lastInsertID.ToString() == String.Empty)
            {
                lastInsertID = 0;
            }
            return(lastInsertID);
        }
Ejemplo n.º 23
0
        public void TestSqlLoggerMemoryCacheExpired()
        {
            DateTime testStart = DateTime.Now;

            Log.DefaultMemoryLogger.ValidLevels = LogLevels.All;

            // Create a new sql logger
            SqlLogger sqlLogger = new SqlLogger("Test SQL Logger",
                                                new Guid("E12A1F4A-6F69-4F35-B2A0-96B112C495D5"),
                                                ConnectionString);

            // Add the sql logger
            Log.GetOrAddLogger(sqlLogger);

            // Add the test log items
            var testLogItems = AddTestLogItemsWrapper(testStart);

            Thread.Sleep(2100000);

            // Force an immediate GC of all generations.
            GC.Collect(0, GCCollectionMode.Forced);
            GC.Collect(1, GCCollectionMode.Forced);
            GC.Collect(2, GCCollectionMode.Forced);

            // Give the GC 120s econds (just to be safe).
            Thread.Sleep(120000);

            IEnumerable <Log> logs = Log.GetForward(sqlLogger, testStart, 10);

            //foreach (string expectedOutput in testLogItems.Select(test => test.ExpectedOutput))
            //{
            //    string output = expectedOutput;
            //    Assert.IsTrue(logs.Any(l => l.Operation.Name == OPERATION_NAME
            //        && l.Operation.CategoryName == OPERATION_CATEGORY_NAME
            //        && l.Operation.Parent != null
            //        && l.Operation.Parent.Name == OPERATION_NAME_WRAPPER
            //        && l.Message.Equals(output)));
            //}
        }
    public static void Delete <T>(this ISqlConnectionProvider sqlConnectionProvider, T objToDelete,
                                  Expression <Func <T, object> > keyProperties = null, string tableName = null, string schemaName = null, bool processColumnNames = true)
    {
        tableName = SqlTextFunctions.GetTableName(objToDelete.GetType(), tableName, schemaName);

        using (var myConnection = sqlConnectionProvider.ToSqlConnection())
        {
            using (var myCommand = new SqlCommand()
            {
                Connection = myConnection
            })
            {
                SqlTextFunctions.UnUnderscoreColumnNames = processColumnNames;
                BuildOutMyCommand(objToDelete, keyProperties, tableName, myCommand);
                SqlTextFunctions.UnUnderscoreColumnNames = true;

                myConnection.Open();
                SqlLogger.LogSqlStatement(myCommand.CommandText);
                myCommand.ExecuteNonQuery();
                myConnection.Close();
            }
        }
    }
Ejemplo n.º 25
0
        public void TestSqlLogger()
        {
            DateTime testStart = DateTime.Now;

            Log.DefaultMemoryLogger.ValidLevels = LogLevels.All;

            // Create a new SQL logger
            SqlLogger sqlLogger = new SqlLogger("Test SQL Logger",
                                                new Guid("E12A1F4A-6F69-4F35-B2A0-96B112C495D5"),
                                                ConnectionString);

            // Add the SQL logger
            Log.GetOrAddLogger(sqlLogger);

            // Every 500ms log some items.
            int x = 0;

            while (x < 50)
            {
                AddTestLogItemsWrapper(testStart);
                x++;

                Thread.Sleep(500);
            }

            // TODO: Retrieve and check we havent added the latest every time.

            //foreach (string expectedOutput in testLogItems.Select(test => test.ExpectedOutput))
            //{
            //    string output = expectedOutput;
            //    Assert.IsTrue(logs.Any(l => l.Operation.Name == OPERATION_NAME
            //        && l.Operation.CategoryName == OPERATION_CATEGORY_NAME
            //        && l.Operation.Parent != null
            //        && l.Operation.Parent.Name == OPERATION_NAME_WRAPPER
            //        && l.Message.Equals(output)));
            //}
        }
    public static void Insert(this ISqlConnectionProvider sqlConnectionProvider,
                              object obj,
                              string tableName  = null,
                              string schemaName = null,
                              IEnumerable <string> columnsToIgnore = null,
                              bool processColumnNames = true,
                              bool useIdentityInsert  = false)
    {
        tableName = SqlTextFunctions.GetTableName(obj.GetType(), tableName, schemaName);

        var propertyInfos = SqlClrHelpers.GetRelevantPropertyInfos(obj, columnsToIgnore);

        if (propertyInfos.Count == 0)
        {
            return;
        }

        using (var myConnection = sqlConnectionProvider.GetSqlConnectionWithTimeout(60))
        {
            using (var myCommand = new SqlCommand {
                Connection = myConnection
            })
            {
                SqlTextFunctions.UnUnderscoreColumnNames = processColumnNames;
                BuildOutMyCommand(obj, tableName, propertyInfos, myCommand, processColumnNames);
                SqlTextFunctions.UnUnderscoreColumnNames = true;

                myConnection.Open();
                SqlLogger.LogSqlCommand(myCommand);

                // if (useIdentityInsert)
                //     myConnection.Execute("set identity_insert on;");
                myCommand.ExecuteNonQuery();
                myConnection.Close();
            }
        }
    }
Ejemplo n.º 27
0
        public void PoolingThread_100LogsRaisedAndAPauseThenAnotherLog_PoolingThreadShutsDownAndStartsUpAgain()
        {
            // Arrange
            var logger = new SqlLogger(new TestApplicationSettings {
                EnableThreadedLogging = true, EnableDebug = true
            }, new NullCorrelationIdHelper());

            logger.LogDebug(string.Format("Test run index {0}", 0));
            logger.LogDebug(string.Format("Test run index {0}", 1));
            Thread.Sleep(5000);

            for (int i = 2; i < 100; i++)
            {
                logger.LogDebug(string.Format("Test run index {0}", i));
            }
            Thread.Sleep(5000);

            // Act
            logger.LogDebug(string.Format("Test run index {0}", 100));

            // Assert
            // No exception thrown and disposing
            logger.Dispose();
        }
Ejemplo n.º 28
0
        /// <summary>
        /// Initializers the specified system setting reader.
        /// </summary>
        /// <param name="SystemSettingReader">The system setting reader.</param>
        private void Initializer(ISettingReader SystemSettingReader, string SettingKey)
        {
            ILogger SystemLogger            = null;
            IOrganizationService XrmService = null;
            CubeBase             SystemBase = null;

            List <SettingGroup> SystemSettingsGroup = SystemSettingReader.Read(SettingKey);

            //load global settings
            if (SystemSettingsGroup != null && SystemSettingsGroup.Count > 0)
            {
                SettingGroup            groupGlobalSettings = SystemSettingsGroup.FirstOrDefault(s => s.GroupName == "GlobalSettings");
                EnumCarrier.LogLevel    logLevel            = EnumCarrier.LogLevel.None;
                EnumCarrier.LogScreen   logScreen           = EnumCarrier.LogScreen.None;
                EnumCarrier.LogLocation logger = EnumCarrier.LogLocation.None;

                if (groupGlobalSettings != null && groupGlobalSettings.Settings != null && groupGlobalSettings.Settings.Count > 0)
                {
                    //load logger settings
                    logLevel  = (EnumCarrier.LogLevel)groupGlobalSettings.Settings.FirstOrDefault(l => l.Key == "LogLevel").Value;
                    logScreen = (EnumCarrier.LogScreen)groupGlobalSettings.Settings.FirstOrDefault(l => l.Key == "LogScreen").Value;
                    logger    = (EnumCarrier.LogLocation)groupGlobalSettings.Settings.FirstOrDefault(l => l.Key == "LogLocation").Value;
                    switch (logger)
                    {
                    case EnumCarrier.LogLocation.CRM:
                        break;

                    case EnumCarrier.LogLocation.SQL:
                        SystemLogger = new SqlLogger();
                        break;

                    case EnumCarrier.LogLocation.Text:
                        SystemLogger = new TextLogger();
                        break;
                    }
                }

                SettingGroup groupConnections = SystemSettingsGroup.FirstOrDefault(s => s.GroupName == "Connections");
                if (groupConnections != null && groupConnections.Settings != null && groupConnections.Settings.Count > 0)
                {
                    IDetailedLog logSystem = null;
                    if (logger == EnumCarrier.LogLocation.SQL)
                    {
                        string        connectionString = groupConnections.Settings.FirstOrDefault(l => l.Key == "SQL").Value.ToString();
                        SqlConnection connection       = new SqlConnection(connectionString);
                        logSystem = new DetailedLog(SystemLogger, logLevel, connection, logScreen);
                    }
                    else if (logger == EnumCarrier.LogLocation.Text)
                    {
                        string logPath = groupGlobalSettings.Settings.FirstOrDefault(l => l.Key == "LogPath").Value.ToString();
                        logSystem = new DetailedLog(SystemLogger, logLevel, logPath, logScreen);
                    }

                    SystemBase           = new CubeBase();
                    SystemBase.LogSystem = logSystem;

                    bool OpenOrganizationService = (bool)groupGlobalSettings.Settings.FirstOrDefault(l => l.Key == "OpenOrganizationService").Value;
                    if (OpenOrganizationService)
                    {
                        string  crmConnection = groupConnections.Settings.FirstOrDefault(l => l.Key == "CRM").Value.ToString();
                        Service service       = new Service(SystemBase.LogSystem);
                        Result  result        = service.GetService(crmConnection);
                        if (!result.isError)
                        {
                            XrmService            = (IOrganizationService)result.BusinessObject;
                            SystemBase.XrmService = XrmService;
                        }
                    }
                }

                cube = SystemBase;
                cube.XRMActions.Create(new Entity());
                cube.RetrieveActions.getItemsFetch("");
                cube.MetadataRetrieveActions.GetOptionSets("", "");
            }
        }
Ejemplo n.º 29
0
        private static void WriteToSql(Exception exception)
        {
            var sqlLogger = new SqlLogger(new DetailedError());

            sqlLogger.Write(exception);
        }
Ejemplo n.º 30
0
 public ConsoleLoggerFactory()
 {
     _logger = new SqlLogger();
 }
Ejemplo n.º 31
0
 public AutoPilot()
 {
     _airplane = new Airplane();
     _logger   = new SqlLogger();
 }
Ejemplo n.º 32
0
 public void Setup()
 {
     ex     = new Faker <Exception>().Generate();
     logger = new SqlLogger(IErrorMock.GetIErrorMock());
 }
Ejemplo n.º 33
0
        public override IEnumerable <Dictionary <string, object> > ExecuteSqlReader(string sql, QueryParameterCollection parameters)
        {
            var stopwatch = SqlLogger != null?Stopwatch.StartNew() : null;

            var stmt = CreateCommand(sql, parameters);

            try
            {
                for (;;)
                {
                    var returnCode = SQLitePCL.raw.sqlite3_step(stmt);

                    if (returnCode == SQLitePCL.raw.SQLITE_BUSY)
                    {
                        Task.Delay(100).Wait();
                        continue;
                    }

                    if (returnCode == SQLitePCL.raw.SQLITE_DONE)
                    {
                        break;
                    }

                    if (returnCode != SQLitePCL.raw.SQLITE_ROW)
                    {
                        throw new SqliteException((SqliteReturnCode)returnCode, (SqliteExtendedErrorCode)SQLitePCL.raw.sqlite3_extended_errcode(DbHandle), SQLitePCL.raw.sqlite3_errmsg(DbHandle).utf8_to_string());
                    }

                    Dictionary <string, object> record = new Dictionary <string, object>();

                    for (int i = 0; i < SQLitePCL.raw.sqlite3_column_count(stmt); i++)
                    {
                        string fieldName = SQLitePCL.raw.sqlite3_column_name(stmt, i).utf8_to_string();

                        var columnType = SQLitePCL.raw.sqlite3_column_type(stmt, i);

                        switch (columnType)
                        {
                        case SQLitePCL.raw.SQLITE_BLOB:
                            record[fieldName] = SQLitePCL.raw.sqlite3_column_blob(stmt, i).ToArray();
                            break;

                        case SQLitePCL.raw.SQLITE_TEXT:
                            record[fieldName] = SQLitePCL.raw.sqlite3_column_text(stmt, i).utf8_to_string();
                            break;

                        case SQLitePCL.raw.SQLITE_FLOAT:
                            record[fieldName] = SQLitePCL.raw.sqlite3_column_double(stmt, i);
                            break;

                        case SQLitePCL.raw.SQLITE_INTEGER:
                            record[fieldName] = SQLitePCL.raw.sqlite3_column_int64(stmt, i);
                            break;

                        case SQLitePCL.raw.SQLITE_NULL:
                            record[fieldName] = null;
                            break;
                        }
                    }

                    yield return(record);
                }
            }
            finally
            {
                SQLitePCL.raw.sqlite3_finalize(stmt);
            }

            SqlLogger?.LogSql(sql, parameters?.ToDictionary(p => SqlDialect.CreateParameterExpression(p.Name), p => p.Value), stopwatch?.Elapsed ?? TimeSpan.Zero);
        }
Ejemplo n.º 34
0
        public void SqlLogger_WorksProperly()
        {
            using (new MunqContext())
            {
                var fld = SystemLogRow.Fields;

                var registrar  = Dependency.Resolve <IDependencyRegistrar>();
                var fakeConfig = A.Fake <IConfigurationRepository>();
                A.CallTo(() => fakeConfig.Load(null))
                .WithAnyArguments()
                .ReturnsLazily((Type t) =>
                               JSON.ParseTolerant(JSON.Stringify(new
                {
                    Level         = "Debug",
                    ConnectionKey = "Serenity",
                    InsertCommand = new SqlInsert(fld.TableName)
                                    .SetTo(fld.EventDate, "@date")
                                    .SetTo(fld.LogLevel, "@level")
                                    .SetTo(fld.LogMessage, "@message")
                                    .SetTo(fld.Exception, "@exception")
                                    .SetTo(fld.SourceType, "@source")
                                    .ToString()
                }), t));

                registrar.RegisterInstance <IConfigurationRepository>("Application", fakeConfig);

                using (var context = NewDbTestContext())
                {
                    context.ExpireOverrides();
                    var logger = new SqlLogger();
                    registrar.RegisterInstance <ILogger>(logger);

                    Log.MinimumLevel = LoggingLevel.Debug;
                    Log.Debug("Hello1", new Exception("SomeException1"), this.GetType());
                    Log.Info("Hello2", new Exception("SomeException2"), this.GetType());
                    Log.Warn("Hello3", new Exception("SomeException3"), this.GetType());

                    using (var connection = SqlConnections.NewByKey("Serenity"))
                    {
                        logger.Flush();
                        var items = connection.List <SystemLogRow>(q => q.SelectTableFields().OrderBy(fld.ID, desc: true).Take(3));

                        Assert.Equal(3, items.Count);

                        var item = items[2];
                        Assert.Equal("Hello1", item.LogMessage);
                        Assert.Contains("SomeException1", item.Exception);
                        Assert.Equal("Debug", item.LogLevel);
                        Assert.Equal(this.GetType().FullName, item.SourceType);
                        Assert.True(DateTime.Now.Subtract(item.EventDate.Value).TotalSeconds < 60);

                        item = items[1];
                        Assert.Equal("Hello2", item.LogMessage);
                        Assert.Contains("SomeException2", item.Exception);
                        Assert.Equal("Info", item.LogLevel);
                        Assert.Equal(this.GetType().FullName, item.SourceType);
                        Assert.True(DateTime.Now.Subtract(item.EventDate.Value).TotalSeconds < 60);

                        item = items[0];
                        Assert.Equal("Hello3", item.LogMessage);
                        Assert.Contains("SomeException3", item.Exception);
                        Assert.Equal("Warn", item.LogLevel);
                        Assert.Equal(this.GetType().FullName, item.SourceType);
                        Assert.True(DateTime.Now.Subtract(item.EventDate.Value).TotalSeconds < 60);
                    }
                }
            }
        }