Aws Log Report
[AllowAnonymous]
[HttpPost]
[Route("GetAwsLogs")]
public async Task<DbFetchListResponse<ResultFieldDto>> GetAwsLog(GetAwsLogRequest oRequest)
{
DbFetchListResponse<ResultFieldDto> retu = DbFetchListResponse<ResultFieldDto>.GetFailureInstance(-1, "Initialization Ready");
string resultJson = string.Empty;
try
{
TabAwsLogRequest oTabAwsLogRequest = await this._IAwsLogService.GetAwsLogRequestById(oRequest.AwsLogRequestId);
if (oTabAwsLogRequest != null)
{
DateTime epoch = new DateTime(1970, 1, 1);
IAmazonCloudWatchLogs iAmazonCloudWatchLogs = new AmazonCloudWatchLogsClient();
StartQueryRequest oStartQueryRequest = new StartQueryRequest();
oStartQueryRequest.LogGroupNames = JsonHelper.DeSerialize<List<string>>(oTabAwsLogRequest.AwsLogGroupNames);
oStartQueryRequest.StartTime = (long)(oRequest.FromDtTm - epoch).TotalSeconds * 1000;
oStartQueryRequest.EndTime = (long)(oRequest.ToDtTm - epoch).TotalSeconds * 1000;
string query = oTabAwsLogRequest.AwsQuery;
query = query.Replace("##messageLikeStr##", oRequest.MessageLike);
query = query.Replace("##Limit##", oRequest.Limit.ToString());
oStartQueryRequest.QueryString = query;
oStartQueryRequest.Limit = oRequest.Limit;
StartQueryResponse oStartQueryResponse = await iAmazonCloudWatchLogs.StartQueryAsync(oStartQueryRequest);
bool isFetchQueryResult = true;
string[] jsonRemoveProps = new string[] { "headers", "bb-ray", "x-amzn-trace-id", "claims" };
while (isFetchQueryResult)
{
Thread.Sleep(1000);
GetQueryResultsRequest oGetQueryResultsRequest = new GetQueryResultsRequest();
oGetQueryResultsRequest.QueryId = oStartQueryResponse.QueryId;
GetQueryResultsResponse oGetQueryResultsResponse = await iAmazonCloudWatchLogs
.GetQueryResultsAsync(oGetQueryResultsRequest);
if (oGetQueryResultsResponse.Status == QueryStatus.Running || oGetQueryResultsResponse.Status == QueryStatus.Scheduled)
isFetchQueryResult = true;
else
isFetchQueryResult = false;
if (oGetQueryResultsResponse.Status == QueryStatus.Complete)
{
List<IEnumerable<ResultField>> retuT = oGetQueryResultsResponse.Results
.Select(x => x.Where(y => y.Field == "@timestamp" || y.Field == "@message"))
.ToList();
List<ResultFieldDto> items = new List<ResultFieldDto>();
foreach (IEnumerable<ResultField> iEnumerable in retuT)
{
string message = iEnumerable.Where(x => x.Field == "@message").FirstOrDefault().Value;
message = JsonHelper.RemovePropFromJson(message, jsonRemoveProps);
ResultFieldDto oResultFieldDto = new ResultFieldDto()
{
TimeStamp = iEnumerable.Where(x => x.Field == "@timestamp").FirstOrDefault().Value,
Message = message
};
items.Add(oResultFieldDto);
}
retu = DbFetchListResponse<ResultFieldDto>.GetSuccessInstance(items);
}
}
}
else
retu = DbFetchListResponse<ResultFieldDto>.GetFailureInstance(-1, "No matching log request found");
}
catch (Exception ex)
{
string exception = ex.ToString();
}
return retu;
}
---------------------------
Comments
Post a Comment