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 }