github.com/hhsnopek/up@v0.1.1/internal/logs/writer/writer.go (about)

     1  // Package writer provides an io.Writer for capturing
     2  // process output as logs, so that stdout may become
     3  // INFO, and stderr ERROR.
     4  package writer
     5  
     6  import (
     7  	"io"
     8  	"strings"
     9  
    10  	"github.com/apex/log"
    11  )
    12  
    13  // TODO: capture indented output as single log call
    14  // TODO: json support?
    15  
    16  // writer struct.
    17  type writer struct {
    18  	Level log.Level
    19  	Log   log.Interface
    20  }
    21  
    22  // Write implementation.
    23  func (w *writer) Write(b []byte) (int, error) {
    24  	switch w.Level {
    25  	case log.InfoLevel:
    26  		w.Log.Info(strings.TrimSpace(string(b)))
    27  	case log.ErrorLevel:
    28  		w.Log.Error(strings.TrimSpace(string(b)))
    29  	}
    30  
    31  	return len(b), nil
    32  }
    33  
    34  // New writer with the given log level.
    35  func New(l log.Level) io.Writer {
    36  	return &writer{
    37  		Level: l,
    38  		Log:   log.WithField("app", true), // TODO: rename?
    39  	}
    40  }