bamzi / jobrunner

Framework for performing work asynchronously, outside of the request flow
MIT License
1.04k stars 99 forks source link

Use std logger to allow override output #22

Open vgarvardt opened 4 years ago

vgarvardt commented 4 years ago

This PR changes output for the application flow logs from direct write to os.Stdout (fmt.Print) to stdlib log that allows to override real output with the existing log writer. E.g.

imprt (
  "log"
  "go.uber.org/zap"
)

// implements io.Writer to write logs to app logger instead of default os.Stderr
type stdLoggerWriter struct {
    logger *zap.Logger
}

func (w *stdLoggerWriter) Write(p []byte) (int, error) {
    w.logger.Info(string(p), zap.String("source", "std-log"))
    return len(p), nil
}

logger, _ := zap.NewDevelopment()

// override std logger to write into app logger
log.SetOutput(&stdLoggerWriter{logger})