示例#1
0
        protected virtual IEnumerable <string[]> LoadLinesWithMetadata(AzureConnectionSettings settings)
        {
            CloudTable cloudTable = BuildTable(settings, "WADLogsTable");
            TableQuery tableQuery = BuildQuery(settings);

            tableQuery.Select(new List <string>
            {
                "Message",
                "EventTickCount",
                "Role",
                "RoleInstance"
            });
            EntityResolver <string[]> resolver = (string key, string rowKey, DateTimeOffset timestamp, IDictionary <string, EntityProperty> properties, string etag) =>
            {
                CurrentLogDate       = timestamp.Date;
                LinesReadFromSource += 1uL;
                return(new string[]
                {
                    properties["Message"].StringValue,
                    properties["EventTickCount"].Int64Value?.ToString(),
                    properties["Role"].StringValue,
                    properties["RoleInstance"].StringValue
                });
            };

            return(cloudTable.ExecuteQuery(tableQuery, resolver, null, null));
        }
示例#2
0
        public ILogSource GetSource(IConnectionSettings connectionSettings)
        {
            AzureConnectionSettings azureConnectionSettings = connectionSettings as AzureConnectionSettings;

            azureConnectionSettings = new AzureConnectionSettings(azureConnectionSettings.StorageName, azureConnectionSettings.StorageKey, true, azureConnectionSettings.QueryFilter, azureConnectionSettings.StartTimeFilter, azureConnectionSettings.EndTimeFilter, azureConnectionSettings.RoleFilter, azureConnectionSettings.RoleInstanceFilter);
            return(new AzureLogSource(azureConnectionSettings));
        }
示例#3
0
        protected virtual CloudTable BuildTable(AzureConnectionSettings settings, string tableName)
        {
            StorageCredentials  storageCredentials  = new StorageCredentials(settings.StorageName, settings.StorageKey);
            CloudStorageAccount cloudStorageAccount = new CloudStorageAccount(storageCredentials, settings.UseHttps);
            CloudTableClient    cloudTableClient    = cloudStorageAccount.CreateCloudTableClient();

            return(cloudTableClient.GetTableReference(tableName));
        }
示例#4
0
        protected virtual TableQuery BuildQuery(AzureConnectionSettings settings)
        {
            var tableQuery = new TableQuery();
            // Text filter
            string filterText = settings.QueryFilter.Trim();

            // Min time filter
            if (settings.StartTimeFilter != DateTime.MinValue)
            {
                var ticks = TimeZoneInfo.ConvertTimeToUtc(settings.StartTimeFilter).Ticks;
                var startTimeFilterCondition = TableQuery.GenerateFilterCondition("PartitionKey", "ge", "0" + ticks);
                filterText = !string.IsNullOrEmpty(filterText) ? TableQuery.CombineFilters(filterText, "and", startTimeFilterCondition) : startTimeFilterCondition;
            }

            // Max time filter
            if (settings.EndTimeFilter != DateTime.MinValue)
            {
                var ticks = TimeZoneInfo.ConvertTimeToUtc(settings.EndTimeFilter).Ticks;
                var endTimeFilterCondition = TableQuery.GenerateFilterCondition("PartitionKey", "le", "0" + ticks);
                filterText = !string.IsNullOrEmpty(filterText) ? TableQuery.CombineFilters(filterText, "and", endTimeFilterCondition) : endTimeFilterCondition;
            }

            // Role filter
            if (settings.RoleFilter?.Length > 0)
            {
                var roleFilterCondition = settings.RoleFilter.Aggregate(string.Empty, (acc, x) => TableQuery.CombineFilters(acc, "or", TableQuery.GenerateFilterCondition("Role", "eq", x)));
                filterText = !string.IsNullOrEmpty(filterText) ? TableQuery.CombineFilters(filterText, "and", roleFilterCondition) : roleFilterCondition;
            }

            // Role instance filter
            if (settings.RoleInstanceFilter?.Length > 0)
            {
                var roleInstanceFilterCondition = settings.RoleInstanceFilter.Aggregate(string.Empty, (acc, x) => TableQuery.CombineFilters(acc, "or", TableQuery.GenerateFilterCondition("RoleInstance", "eq", x)));
                filterText = !string.IsNullOrEmpty(filterText) ? TableQuery.CombineFilters(filterText, "and", roleInstanceFilterCondition) : roleInstanceFilterCondition;
            }

            tableQuery.FilterString = filterText;
            return(tableQuery);
        }
 protected virtual void SaveManualConfigurationSettings(object sender, EventArgs e)
 {
     var azureManualConfigurationControl = (AzureManualConfigurationControl)sender;
     if (string.IsNullOrEmpty(azureManualConfigurationControl.StorageName) || string.IsNullOrEmpty(azureManualConfigurationControl.StorageKey))
     {
         MessageBox.Show("StorageName and StorageKey cannot be empty.");
         return;
     }
     if (azureManualConfigurationControl.StartTimeFilter > azureManualConfigurationControl.EndTimeFilter)
     {
         MessageBox.Show("Incorrect Date filter: start date > end date.");
         return;
     }
     this.ConnectionSettings = new AzureConnectionSettings(azureManualConfigurationControl.StorageName, azureManualConfigurationControl.StorageKey, true, azureManualConfigurationControl.QueryFilter, azureManualConfigurationControl.StartTimeFilter, azureManualConfigurationControl.EndTimeFilter, azureManualConfigurationControl.RoleFilter.Split(new char[]
     {
         ','
     }, StringSplitOptions.RemoveEmptyEntries), azureManualConfigurationControl.RoleInstanceFilter.Split(new char[]
     {
         ','
     }, StringSplitOptions.RemoveEmptyEntries));
     AzureSourceStateStorage.ParsingResultWithoutFiltering = null;
     DialogResult = DialogResult.OK;
     Close();
 }
 public ILogSource GetSource(IConnectionSettings connectionSettings)
 {
     AzureConnectionSettings azureConnectionSettings = connectionSettings as AzureConnectionSettings;
     azureConnectionSettings = new AzureConnectionSettings(azureConnectionSettings.StorageName, azureConnectionSettings.StorageKey, true, azureConnectionSettings.QueryFilter, azureConnectionSettings.StartTimeFilter, azureConnectionSettings.EndTimeFilter, azureConnectionSettings.RoleFilter, azureConnectionSettings.RoleInstanceFilter);
     return new AzureLogSource(azureConnectionSettings);
 }
示例#7
0
 public AzureLogSource(AzureConnectionSettings settings)
 {
     list = LoadLinesWithMetadata(settings).GetEnumerator();
     base.NumberOfLinesReadToNotifyOfProgress = 1500u;
 }