aws-logs 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/README.md +3 -11
- data/lib/aws_logs.rb +2 -0
- data/lib/aws_logs/cli.rb +2 -2
- data/lib/aws_logs/help/tail.md +14 -1
- data/lib/aws_logs/tail.rb +22 -13
- data/lib/aws_logs/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 64ddf1d20fab423535f9f50bb65c10ae9be2130c57fbf15575a12ea5c3d63e96
|
4
|
+
data.tar.gz: f48a61b93834a37c64e22e088465f4d2212a863fc69c42214f250237713a4886
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d362480e5d9aa1279ff5350bf685b3cdb350523f960e29a884106857c8a0f3033c9dc6974d778dc17971ca07c65d523b74da7b6e3e4f9e232331328bff801bc
|
7
|
+
data.tar.gz: 456686311206099c88a2f931e6369eb030145a97d3e45d54381b6e5a237b816bf5234bc029edd2fb0d6062e156d6092e6c4dec5ec7fe1753121c669227d1f6a9
|
data/CHANGELOG.md
CHANGED
@@ -3,5 +3,10 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
This project *tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
|
5
5
|
|
6
|
+
## [0.2.0]
|
7
|
+
- add stop_follow! method
|
8
|
+
- friendly error message when log not found
|
9
|
+
- improve `@follow` default, `@log_group_name` and stdout sync true by default
|
10
|
+
|
6
11
|
## [0.1.0]
|
7
12
|
- Initial release.
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
#
|
1
|
+
# aws-logs
|
2
2
|
|
3
3
|
[](http://badge.fury.io/rb/GEMNAME)
|
4
4
|
|
@@ -12,7 +12,7 @@ Tail AWS CloudWatch Logs.
|
|
12
12
|
|
13
13
|
## Examples
|
14
14
|
|
15
|
-
Here's a couple of examples where
|
15
|
+
Here's a couple of examples where `LOG_GROUP=/aws/codebuild/demo`:
|
16
16
|
|
17
17
|
aws-logs tail /aws/codebuild/demo --since 60m
|
18
18
|
aws-logs tail /aws/codebuild/demo --since "2018-08-08 08:00:00"
|
@@ -25,15 +25,7 @@ Here's a couple of examples where the `LOG_GROUP=/aws/codebuild/demo`:
|
|
25
25
|
|
26
26
|
## Installation
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
gem "aws-logs"
|
31
|
-
|
32
|
-
And then execute:
|
33
|
-
|
34
|
-
bundle
|
35
|
-
|
36
|
-
Or install it yourself as:
|
28
|
+
Install with:
|
37
29
|
|
38
30
|
gem install aws-logs
|
39
31
|
|
data/lib/aws_logs.rb
CHANGED
data/lib/aws_logs/cli.rb
CHANGED
@@ -9,8 +9,8 @@ module AwsLogs
|
|
9
9
|
option :log_stream_name_prefix, desc: "Filters the results to include only events from log streams that have names starting with this prefix. Can only use log_stream_names or log_stream_name_prefix but not both."
|
10
10
|
option :filter_pattern, desc: "The filter pattern to use. If not provided, all the events are matched"
|
11
11
|
option :follow_until, desc: "Exit out of the follow loop once this text is found."
|
12
|
-
def tail(
|
13
|
-
Tail.new(options.merge(
|
12
|
+
def tail(log_group_name)
|
13
|
+
Tail.new(options.merge(log_group_name: log_group_name)).run
|
14
14
|
end
|
15
15
|
|
16
16
|
desc "completion *PARAMS", "Prints words for auto-completion."
|
data/lib/aws_logs/help/tail.md
CHANGED
@@ -41,4 +41,17 @@ Since supports these formats:
|
|
41
41
|
* d - days
|
42
42
|
* w - weeks
|
43
43
|
|
44
|
-
Since does not current support combining the formats. IE: 5m30s.
|
44
|
+
Since does not current support combining the formats. IE: 5m30s.
|
45
|
+
|
46
|
+
## Filter Pattern
|
47
|
+
|
48
|
+
The `--filter-pattern` option is quite powerful as CloudWatch supports a full
|
49
|
+
[Filter and Pattern Syntax](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html).
|
50
|
+
|
51
|
+
To match terms with spaces in it, you'll need quotes around it. Otherise, the match will be an OR of the terms. Example:
|
52
|
+
|
53
|
+
aws-logs tail /aws/codebuild/demo --filter-pattern '"Wed Nov 27 23"' --since 3h --no-follow
|
54
|
+
|
55
|
+
Here's an example of matching with an exclude patter using the `-` (minus sign).
|
56
|
+
|
57
|
+
aws-logs tail /aws/codebuild/demo --filter-pattern '"ERROR" - "Exiting"' --since 3h --no-follow
|
data/lib/aws_logs/tail.rb
CHANGED
@@ -6,7 +6,9 @@ module AwsLogs
|
|
6
6
|
|
7
7
|
def initialize(options={})
|
8
8
|
@options = options
|
9
|
-
@
|
9
|
+
@log_group_name = options[:log_group_name]
|
10
|
+
# Setting to ensure matches default CLI option
|
11
|
+
@follow = @options[:follow] || true
|
10
12
|
|
11
13
|
@loop_count = 0
|
12
14
|
@output = [] # for specs
|
@@ -14,15 +16,6 @@ module AwsLogs
|
|
14
16
|
set_trap
|
15
17
|
end
|
16
18
|
|
17
|
-
@@end_loop_signal = false
|
18
|
-
def set_trap
|
19
|
-
Signal.trap("INT") {
|
20
|
-
puts "\nCtrl-C detected. Exiting..."
|
21
|
-
@@end_loop_signal = true # delayed exit, usefu control loop flow though
|
22
|
-
exit # immediate exit
|
23
|
-
}
|
24
|
-
end
|
25
|
-
|
26
19
|
def reset
|
27
20
|
@events = [] # constantly replaced with recent events
|
28
21
|
@last_shown_event_id = nil
|
@@ -48,8 +41,11 @@ module AwsLogs
|
|
48
41
|
display
|
49
42
|
since, now = now, current_now
|
50
43
|
loop_count!
|
51
|
-
sleep 5 if @
|
44
|
+
sleep 5 if @follow && !@@end_loop_signal && !ENV["AWS_LOGS_TEST"]
|
52
45
|
end
|
46
|
+
rescue Aws::CloudWatchLogs::Errors::ResourceNotFoundException => e
|
47
|
+
puts "ERROR: #{e.class}: #{e.message}".color(:red)
|
48
|
+
puts "Log group #{@log_group_name} not found."
|
53
49
|
end
|
54
50
|
|
55
51
|
def refresh_events(start_time, end_time)
|
@@ -59,7 +55,7 @@ module AwsLogs
|
|
59
55
|
# TODO: can hit throttle limit if there are lots of pages
|
60
56
|
while next_token
|
61
57
|
options = {
|
62
|
-
log_group_name: @
|
58
|
+
log_group_name: @log_group_name, # required
|
63
59
|
start_time: start_time,
|
64
60
|
end_time: end_time,
|
65
61
|
# limit: 10,
|
@@ -114,6 +110,19 @@ module AwsLogs
|
|
114
110
|
@output.join("\n") + "\n"
|
115
111
|
end
|
116
112
|
|
113
|
+
@@end_loop_signal = false
|
114
|
+
def set_trap
|
115
|
+
Signal.trap("INT") {
|
116
|
+
puts "\nCtrl-C detected. Exiting..."
|
117
|
+
@@end_loop_signal = true # useful to control loop
|
118
|
+
exit # immediate exit
|
119
|
+
}
|
120
|
+
end
|
121
|
+
|
122
|
+
def self.stop_follow!
|
123
|
+
@@end_loop_signal = true
|
124
|
+
end
|
125
|
+
|
117
126
|
private
|
118
127
|
def initial_since
|
119
128
|
since = @options[:since]
|
@@ -136,7 +145,7 @@ module AwsLogs
|
|
136
145
|
|
137
146
|
# Useful for specs
|
138
147
|
def max_loop_count
|
139
|
-
@
|
148
|
+
@follow ? nil : 1
|
140
149
|
end
|
141
150
|
end
|
142
151
|
end
|
data/lib/aws_logs/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-logs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-11-
|
11
|
+
date: 2019-11-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|