Following Container Logs
If you wish to follow container logs, you can set up LogConsumers. 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 LogConsumers. You can associate LogConsumers 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
}