private List <OutputLogEvent> FunctionLogs(string functionName, DateTime start, DateTime end) { if (_logs == null) { using (var cwClient = new AmazonCloudWatchLogsClient()) { var logStreams = new List <LogStream>(); DescribeLogStreamsResponse lResponse; string nextToken = null; do { lResponse = cwClient.DescribeLogStreams(new DescribeLogStreamsRequest("/aws/lambda/" + functionName) { NextToken = nextToken }); logStreams.AddRange(lResponse.LogStreams); } while (!string.IsNullOrEmpty(nextToken = lResponse.NextToken)); List <OutputLogEvent> logs = new List <OutputLogEvent>(); logStreams.ForEach( s => cwClient.GetLogEvents(new GetLogEventsRequest("/aws/lambda/" + functionName, s.LogStreamName) { Limit = 10000 }).Events.ForEach(e => logs.Add(e))); _logs = logs; } } return(_logs); }
/// <summary> /// Get and write logs to chosen file, This is not at right way to do it, but every task, thread, async/await either lock the GUI or is not working. /// </summary> /// <param name="awsLogGroupName"></param> /// <param name="awsLogStreamName"></param> /// <param name="fromdays"></param> /// <param name="todays"></param> public List <GetLogEventsResponse> GetLogsFrom(string awsLogGroupName, DescribeLogStreamsResponse awsLogStreamName, double fromdays, double todays) { List <GetLogEventsResponse> Logs = new List <GetLogEventsResponse>(); foreach (var item in awsLogStreamName.LogStreams) { awsGetLogsEvent = new GetLogEventsRequest(); awsGetLogsEvent.LogGroupName = awsLogGroupName; awsGetLogsEvent.LogStreamName = item.LogStreamName; awsGetLogsEvent.StartTime = DateTime.Today.AddDays(fromdays); awsGetLogsEvent.EndTime = DateTime.Today.AddDays(todays + 1); Logs.Add(awsCloudwatchClient.GetLogEvents(awsGetLogsEvent)); } return(Logs); }