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)); }
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)); }
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)); }
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); }
public AzureLogSource(AzureConnectionSettings settings) { list = LoadLinesWithMetadata(settings).GetEnumerator(); base.NumberOfLinesReadToNotifyOfProgress = 1500u; }