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  }