Documentation ¶
Overview ¶
Package diode provides a thread-safe, lock-free, non-blocking io.Writer wrapper.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Writer ¶
type Writer struct {
// contains filtered or unexported fields
}
Writer is a io.Writer wrapper that uses a diode to make Write lock-free, non-blocking and thread safe.
func NewWriter ¶
NewWriter creates a writer wrapping w with a many-to-one diode in order to never block log producers and drop events if the writer can't keep up with the flow of data.
Use a diode.Writer when
wr := diode.NewWriter(w, 1000, 0, func(missed int) { log.Printf("Dropped %d messages", missed) }) log := zerolog.New(wr)
If pollInterval is greater than 0, a poller is used otherwise a waiter is used.
See code.cloudfoundry.org/go-diodes for more info on diode.
Example ¶
package main import ( "fmt" "os" "github.com/treavorj/zerolog" "github.com/treavorj/zerolog/diode" ) func main() { w := diode.NewWriter(os.Stdout, 1000, 0, func(missed int) { fmt.Printf("Dropped %d messages\n", missed) }) log := zerolog.New(w) log.Print("test") w.Close() }
Output: {"level":"debug","message":"test"}
Click to show internal directories.
Click to hide internal directories.