From 0fc550ae8fa34152b999dd77a9c801b30964c9e6 Mon Sep 17 00:00:00 2001 From: Gardient Date: Fri, 16 Sep 2016 23:16:54 +0300 Subject: [PATCH] Add get of logstream --- CloudWatchLogDownloader/Program.cs | 32 +++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/CloudWatchLogDownloader/Program.cs b/CloudWatchLogDownloader/Program.cs index c739490..f4e7c56 100644 --- a/CloudWatchLogDownloader/Program.cs +++ b/CloudWatchLogDownloader/Program.cs @@ -56,7 +56,37 @@ namespace CloudWatchLogDownloader private static LogStream GetLogStream(LogGroup logGroup, string logStream = null) { - client.DescribeLogStreams(new DescribeLogStreamsRequest("")); + List allStreams = new List(); + DescribeLogStreamsResponse lsResponse = null; + do + { + lsResponse = client.DescribeLogStreams(new DescribeLogStreamsRequest + { + NextToken = (lsResponse != null ? lsResponse.NextToken : null) + }); + allStreams.AddRange(lsResponse.LogStreams); + } while (!string.IsNullOrWhiteSpace(lsResponse.NextToken)); + + if (string.IsNullOrWhiteSpace(logStream) || logStream[logStream.Length - 1] == '*') + { + if (!string.IsNullOrWhiteSpace(logStream)) + { + logStream = logStream.Substring(0, logStream.Length - 1); + allStreams = allStreams.Where(x => x.LogStreamName.StartsWith(logStream)).ToList(); + } + + for (int i = 0, len = allStreams.Count; i < len; ++i) + Console.WriteLine(i + ") " + allStreams[i].LogStreamName); + int num = ReadIntBetween("Choose log stream: ", 0, allStreams.Count - 1); + + return allStreams[num]; + } + + var ls = allStreams.FirstOrDefault(x => x.LogStreamName == logStream); + if (ls == null) + throw new Exception("The log stream '" + logGroup + "' does not exist."); + + return ls; } private static void WriteLogToFile(LogGroup logGroup, LogStream logStream, string outputFilePath = null)