private async Task<IEnumerable<WadPerformanceCounterEntity>> BeginGetPerformanceCounterEntries(Subscription subscription, DateTime fromDate, DateTime? toDate, string role, string counterName) { CloudStorageAccount storageAccount = CloudStorageAccount.Parse(String.Format("DefaultEndpointsProtocol=http;AccountName={0};AccountKey={1}", subscription.AccountName, subscription.AccountKey)); CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); CloudTable table = tableClient.GetTableReference("WADPerformanceCountersTable"); string filter = String.Format("(PartitionKey ge '0{0}')", fromDate.ToUniversalTime().Ticks); if (toDate != null) filter += String.Format("and (PartitionKey le '0{0}')", toDate.Value.ToUniversalTime().Ticks); filter += String.Format(" and (Role eq '{0}')", role); filter += String.Format(" and (CounterName eq '{0}')", counterName); var logQuery = new TableQuery<WadPerformanceCounterEntity>() { FilterString = filter }; return await Task.Factory.StartNew(() => { IEnumerable<WadPerformanceCounterEntity> entries = table.ExecuteQuery(logQuery); return entries; }); }
private async Task<IEnumerable<WadLogEntity>> BeginGetEventLogEntries(Subscription subscription, DateTime fromDate, DateTime? toDate, int? logLevel, string query, string messagePattern) { CloudStorageAccount storageAccount = CloudStorageAccount.Parse(String.Format("DefaultEndpointsProtocol=http;AccountName={0};AccountKey={1}", subscription.AccountName, subscription.AccountKey)); CloudTableClient tableClient = storageAccount.CreateCloudTableClient(); CloudTable table = tableClient.GetTableReference("WADLogsTable"); string filter = String.Format("(PartitionKey ge '0{0}')", fromDate.ToUniversalTime().Ticks); if (toDate != null) filter += String.Format("and (PartitionKey le '0{0}')", toDate.Value.ToUniversalTime().Ticks); if (!String.IsNullOrEmpty(query)) filter += String.Format(" and ({0})", query); if (logLevel != null) filter += String.Format(" and (Level eq {0})", logLevel); var logQuery = new TableQuery<WadLogEntity>() { FilterString = filter }; return await Task.Factory.StartNew(() => { IEnumerable<WadLogEntity> entries = table.ExecuteQuery(logQuery); if (!String.IsNullOrEmpty(messagePattern)) { Regex regex = new Regex(messagePattern, RegexOptions.CultureInvariant | RegexOptions.IgnoreCase); entries = entries.Where(e => regex.IsMatch(e.Message)); } return entries; }); }