/// <summary>
        /// Collect a JSON log to Azure Log Analytics
        /// </summary>
        /// <param name="logType">Name of the Type of Log. Can be any name you want to appear on Azure Log Analytics.</param>
        /// <param name="json">JSON string. Can be an array or single object.</param>
        /// <param name="apiVersion">Optional. Api Version.</param>
        /// <param name="timeGeneratedPropertyName"></param>
        public async Task Collect(string json, string logType = "ApplicationLog", string apiVersion = "2016-04-01", string timeGeneratedPropertyName = null)
        {
            if (!json.Contains("{"))
            {
                await Collect(LogMessage.Log(json));

                return; // dont double log
            }

            string logUri        = $"https://{_workspaceId}.ods.opinsights.azure.com/api/logs?api-version={apiVersion}";
            var    dateTimeNow   = DateTime.UtcNow.ToString("r");
            var    authSignature = GetAuthSignature(json, dateTimeNow);

            try
            {
                await SendLog(json, logType, authSignature, dateTimeNow, logUri);
            }
            catch (Exception excep)
            {
                Consoler.Error("API Post Exception", excep);
                int  breaker = 0;
                bool success = false;

                while (!success && breaker < 10)
                {
                    try
                    {
                        System.Threading.Thread.Sleep(1000);
                        await SendLog(json, logType, authSignature, dateTimeNow, logUri);

                        success = true;
                    }
                    catch (Exception e)
                    {
                        Consoler.Error("API Post Exception 2", excep);
                    }
                    finally
                    {
                        breaker++;
                    }
                }

                if (!success)
                {
                    throw new ApplicationException("LogAnalyticsDataCollector failed over 10 times to record log", excep);
                }
            }
        }
예제 #2
0
파일: DatabaseUtil.cs 프로젝트: lulzzz/vita
        public static void DeleteAllTables(string connectionString)
        {
            try
            {
                ExecuteSqlsWithTrans(connectionString, DropTables);
                ExecuteSqlsWithTrans(connectionString, DropViews);
            }
            catch (Exception ex)
            {
                Consoler.Warn(ex.ToString());
            }

            try
            {
                SetupMsSpForEach(connectionString);
                const string sql =
                    @"DECLARE @Sql NVARCHAR(500) DECLARE @Cursor CURSOR SET @Cursor = CURSOR FAST_FORWARD FOR SELECT DISTINCT sql = 'ALTER TABLE [' + tc2.TABLE_NAME + '] DROP [' + rc1.CONSTRAINT_NAME + ']' FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc1 LEFT JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc2 ON tc2.CONSTRAINT_NAME =rc1.CONSTRAINT_NAME OPEN @Cursor FETCH NEXT FROM @Cursor INTO @Sql WHILE (@@FETCH_STATUS = 0) BEGIN Exec SP_EXECUTESQL @Sql FETCH NEXT FROM @Cursor INTO @Sql END CLOSE @Cursor DEALLOCATE @Cursor EXEC sp_MSForEachTable 'DROP TABLE ?' ";
                ExecuteSqlsWithTrans(connectionString, sql);
            }
            catch (Exception ex)
            {
                Consoler.Error(ex.ToString());
            }
        }