MCPcopy Create free account
hub / github.com/dan-v/lambda-nat-proxy / getRecentLogs

Function getRecentLogs

cmd/lambda-nat-proxy/cmd_status.go:264–323  ·  view source on GitHub ↗
(ctx context.Context, clients *awsclients.Clients, functionName string)

Source from the content-addressed store, hash-verified

262}
263
264func getRecentLogs(ctx context.Context, clients *awsclients.Clients, functionName string) ([]LogEntry, error) {
265 logGroupName := fmt.Sprintf("/aws/lambda/%s", functionName)
266
267 // Get log streams
268 input := &cloudwatchlogs.DescribeLogStreamsInput{
269 LogGroupName: aws.String(logGroupName),
270 OrderBy: aws.String("LastEventTime"),
271 Descending: aws.Bool(true),
272 Limit: aws.Int64(5),
273 }
274
275 streams, err := clients.CloudWatchLogs.DescribeLogStreamsWithContext(ctx, input)
276 if err != nil {
277 return nil, fmt.Errorf("failed to get log streams: %w", err)
278 }
279
280 var entries []LogEntry
281
282 // Get events from the most recent stream
283 if len(streams.LogStreams) > 0 {
284 eventsInput := &cloudwatchlogs.GetLogEventsInput{
285 LogGroupName: aws.String(logGroupName),
286 LogStreamName: streams.LogStreams[0].LogStreamName,
287 StartFromHead: aws.Bool(false),
288 Limit: aws.Int64(20),
289 }
290
291 events, err := clients.CloudWatchLogs.GetLogEventsWithContext(ctx, eventsInput)
292 if err != nil {
293 return nil, fmt.Errorf("failed to get log events: %w", err)
294 }
295
296 for _, event := range events.Events {
297 if event.Message != nil && event.Timestamp != nil {
298 timestamp := time.Unix(*event.Timestamp/1000, 0).Format("2006-01-02 15:04:05")
299 message := strings.TrimSpace(*event.Message)
300
301 // Try to extract log level
302 level := ""
303 if strings.Contains(message, "ERROR") {
304 level = "ERROR"
305 } else if strings.Contains(message, "WARN") {
306 level = "WARN"
307 } else if strings.Contains(message, "INFO") {
308 level = "INFO"
309 } else if strings.Contains(message, "DEBUG") {
310 level = "DEBUG"
311 }
312
313 entries = append(entries, LogEntry{
314 Timestamp: timestamp,
315 Message: message,
316 Level: level,
317 })
318 }
319 }
320 }
321

Callers 1

runStatusFunction · 0.85

Calls 2

Tested by

no test coverage detected