github.com/beornf/libcompose@v0.4.1-0.20210215180846-a59802c0f07c/logger/types.go (about) 1 package logger 2 3 import ( 4 "io" 5 ) 6 7 // Factory defines methods a factory should implement, to create a Logger 8 // based on the specified container, image or service name. 9 type Factory interface { 10 CreateContainerLogger(name string) Logger 11 CreateBuildLogger(name string) Logger 12 CreatePullLogger(name string) Logger 13 } 14 15 // Logger defines methods to implement for being a logger. 16 type Logger interface { 17 Out(bytes []byte) 18 Err(bytes []byte) 19 OutWriter() io.Writer 20 ErrWriter() io.Writer 21 } 22 23 // Wrapper is a wrapper around Logger that implements the Writer interface, 24 // mainly use by docker/pkg/stdcopy functions. 25 type Wrapper struct { 26 Err bool 27 Logger Logger 28 } 29 30 func (l *Wrapper) Write(bytes []byte) (int, error) { 31 if l.Err { 32 l.Logger.Err(bytes) 33 } else { 34 l.Logger.Out(bytes) 35 } 36 return len(bytes), nil 37 }