Class: Stax::Cmd::Logs
Instance Method Summary
collapse
Methods inherited from SubCommand
#info, stax_info, stax_info_tasks
Instance Method Details
#cleanup ⇒ Object
lambdas create their own log groups, and when we delete stack they are left behind; this task looks up their names by stack prefix, and deletes them
168
|
# File 'lib/stax/mixin/logs.rb', line 168
desc 'cleanup', 'cleanup lambda log groups named for stack'
|
#events(stream = nil) ⇒ Object
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# File 'lib/stax/mixin/logs.rb', line 73
def events(stream = nil)
trap('SIGINT', 'EXIT') group = ((g = options[:group]) ? log_groups[g] : log_groups.values.first).log_group_name
stream ||= latest_stream(group).log_stream_name
debug("Log stream #{group}/#{stream}")
token = nil
loop do
resp = Aws::Logs.client.get_log_events(
log_group_name: group,
log_stream_name: stream,
limit: options[:numlines],
next_token: token,
)
resp.events.each do |e|
puts("#{set_color(human_time(e.timestamp).utc, :green)} #{e.message}")
end
token = resp.next_forward_token
options[:follow] ? sleep(options[:sleep]) : break
end
end
|
#filter ⇒ Object
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
# File 'lib/stax/mixin/logs.rb', line 139
def filter
trap('SIGINT', 'EXIT') group = ((g = options[:group]) ? log_groups[g] : log_groups.values.first).log_group_name
debug("Log group #{group}")
start_time = options[:start] ? Time.parse(options[:start]).to_i*1000 : nil
end_time = options[:end] ? Time.parse(options[:end]).to_i*1000 : nil
token = nil
loop do
resp = Aws::Logs.client.filter_log_events(
log_group_name: group,
log_stream_names: options[:streams],
next_token: token,
start_time: start_time,
end_time: end_time,
filter_pattern: options[:pattern],
)
resp.events.each do |e|
time = set_color(human_time(e.timestamp).utc, :green)
stream = set_color(e.log_stream_name, :blue)
puts("#{time} #{stream} #{e.message}")
end
token = resp.next_token
break unless token
end
end
|
#groups ⇒ Object
44
45
46
47
48
|
# File 'lib/stax/mixin/logs.rb', line 44
def groups
print_table log_groups.map { |id, g|
[id, g.log_group_name, g.retention_in_days, human_time(g.creation_time), human_bytes(g.stored_bytes)]
}
end
|
#streams ⇒ Object
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
# File 'lib/stax/mixin/logs.rb', line 53
def streams
log_groups.each do |id, group|
debug(group.log_group_name)
streams = Aws::Logs.streams(
log_group_name: group.log_group_name,
order_by: options[:alpha] ? :LogStreamName : :LastEventTime,
descending: !options[:alpha], limit: options[:limit],
)
print_table streams.map { |s|
[s.log_stream_name, human_time(s.last_event_timestamp), human_bytes(s.stored_bytes)]
}
end
end
|
#tail ⇒ Object
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
# File 'lib/stax/mixin/logs.rb', line 98
def tail
trap('SIGINT', 'EXIT') group = ((g = options[:group]) ? log_groups[g] : log_groups.values.first).log_group_name
debug("Log group #{group}")
token = nil
start_time = Time.now.to_i - 30
loop do
end_time = Time.now.to_i
resp = Aws::Logs.client.filter_log_events(
log_group_name: group,
log_stream_names: options[:streams],
start_time: start_time * 1000, end_time: end_time * 1000,
next_token: token,
interleaved: true,
)
resp.events.each do |e|
puts("#{set_color(human_time(e.timestamp).utc, :green)} #{set_color(e.log_stream_name, :blue)} #{e.message}")
end
token = resp.next_token
unless token
start_time = end_time
sleep 10
end
end
end
|