mirror of
https://github.com/docker/compose.git
synced 2025-07-01 19:04:34 +02:00
Merge pull request #534 from docker/interupt
Poll ECS logs until context is canceled
This commit is contained in:
commit
d85d963705
11
ecs/logs.go
11
ecs/logs.go
@ -21,8 +21,6 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
|
||||||
"os/signal"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
@ -45,14 +43,7 @@ func (b *ecsAPIService) Logs(ctx context.Context, options *cli.ProjectOptions, w
|
|||||||
writer: writer,
|
writer: writer,
|
||||||
}
|
}
|
||||||
err := b.SDK.GetLogs(ctx, name, consumer.Log)
|
err := b.SDK.GetLogs(ctx, name, consumer.Log)
|
||||||
if err != nil {
|
return err
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
signalChan := make(chan os.Signal, 1)
|
|
||||||
signal.Notify(signalChan, os.Interrupt)
|
|
||||||
<-signalChan
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *logConsumer) Log(service, container, message string) {
|
func (l *logConsumer) Log(service, container, message string) {
|
||||||
|
45
ecs/sdk.go
45
ecs/sdk.go
@ -436,27 +436,32 @@ func (s sdk) GetLogs(ctx context.Context, name string, consumer func(service, co
|
|||||||
logGroup := fmt.Sprintf("/docker-compose/%s", name)
|
logGroup := fmt.Sprintf("/docker-compose/%s", name)
|
||||||
var startTime int64
|
var startTime int64
|
||||||
for {
|
for {
|
||||||
var hasMore = true
|
select {
|
||||||
var token *string
|
case <-ctx.Done():
|
||||||
for hasMore {
|
return nil
|
||||||
events, err := s.CW.FilterLogEvents(&cloudwatchlogs.FilterLogEventsInput{
|
default:
|
||||||
LogGroupName: aws.String(logGroup),
|
var hasMore = true
|
||||||
NextToken: token,
|
var token *string
|
||||||
StartTime: aws.Int64(startTime),
|
for hasMore {
|
||||||
})
|
events, err := s.CW.FilterLogEvents(&cloudwatchlogs.FilterLogEventsInput{
|
||||||
if err != nil {
|
LogGroupName: aws.String(logGroup),
|
||||||
return err
|
NextToken: token,
|
||||||
}
|
StartTime: aws.Int64(startTime),
|
||||||
if events.NextToken == nil {
|
})
|
||||||
hasMore = false
|
if err != nil {
|
||||||
} else {
|
return err
|
||||||
token = events.NextToken
|
}
|
||||||
}
|
if events.NextToken == nil {
|
||||||
|
hasMore = false
|
||||||
|
} else {
|
||||||
|
token = events.NextToken
|
||||||
|
}
|
||||||
|
|
||||||
for _, event := range events.Events {
|
for _, event := range events.Events {
|
||||||
p := strings.Split(aws.StringValue(event.LogStreamName), "/")
|
p := strings.Split(aws.StringValue(event.LogStreamName), "/")
|
||||||
consumer(p[1], p[2], aws.StringValue(event.Message))
|
consumer(p[1], p[2], aws.StringValue(event.Message))
|
||||||
startTime = *event.IngestionTime
|
startTime = *event.IngestionTime
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
time.Sleep(500 * time.Millisecond)
|
time.Sleep(500 * time.Millisecond)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user