Following Container Logs
If you wish to follow container logs, you can set up LogConsumer
s. The log
following functionality follows a producer-consumer model. You will need to
explicitly start and stop the producer. As logs are written to either stdout
,
or stderr
(stdin
is not supported) they will be forwarded (produced) to any
associated LogConsumer
s. You can associate LogConsumer
s with the
.FollowOutput
function.
Please note if you start the producer you should always stop it explicitly.
For example, this consumer will just add logs to a slice
type TestLogConsumer struct {
Msgs []string
}
func (g *TestLogConsumer) Accept(l Log) {
g.Msgs = append(g.Msgs, string(l.Content))
}
g := TestLogConsumer{
Msgs: []string{},
}
err := c.StartLogProducer(ctx)
if err != nil {
// do something with err
}
c.FollowOutput(&g)
// some stuff happens...
err = c.StopLogProducer()
if err != nil {
// do something with err
}