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

Popular posts from this blog

tech note

Vue js Standalone