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
165
|
# File 'lib/stax/mixin/logs.rb', line 165
desc 'cleanup', 'cleanup lambda log groups named for stack'
|
#events(stream = nil) ⇒ Object
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'lib/stax/mixin/logs.rb', line 70
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
# File 'lib/stax/mixin/logs.rb', line 136
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
41
42
43
44
45
|
# File 'lib/stax/mixin/logs.rb', line 41
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/stax/mixin/logs.rb', line 50
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
95
96
97
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
|
# File 'lib/stax/mixin/logs.rb', line 95
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
|