Logging api

Reviewers:  @bernerdschaefer, @peterbourgon 

First pass at the internals of the logging API.  This is two layers thick.  There is a RingBuffer for log messages, and on top of this is a data structure that implements storage for and operations for each container.  (The RingBuffer probably should have been a separate submit.)

The next piece to be worked on will be the HTTP logging interface.
Has anyone thought about putting in a pre-submit hook?


On Tue, Jul 29, 2014 at 4:18 PM, Peter Bourgon <notifications@github.com>
wrote:

> In harpoon-agent/logs.go:
>
> > +	containerID ContainerID
> > +	entries *RingBuffer
> > +	listeners map[ListenerID]chan string
> > +	nextListenerID ListenerID
> > +}
> > +
> > +func newContainerLog(containerID ContainerID, bufferSize int) *containerLog {
> > +	return &containerLog{containerID: containerID,
> > +		entries: NewRingBuffer(bufferSize),
> > +		listeners: make(map[ListenerID]chan string),
> > +		nextListenerID: 1,
> > +	}
> > +}
> > +
> > +// TODO: Expire old containers
> > +type LogSet struct {
>
> Please configure your toolchain to run go vet and golint during your
> build process. They would catch the error here, which is that LogSet should
> have a comment (since it's an exported symbol).
>
> —
> Reply to this email directly or view it on GitHub
> <https://github.com/soundcloud/harpoon/pull/13/files#r15524955>.
>