writer.go 476 B

12345678910111213141516171819202122232425
  1. package logging
  2. import (
  3. "bufio"
  4. "io"
  5. kitlog "github.com/go-kit/kit/log"
  6. )
  7. // Writer returns a writer which logs each line that is written to it using a bufio.Scanner
  8. func Writer(unit string, l kitlog.Logger) io.WriteCloser {
  9. l = kitlog.With(l, "unit", unit)
  10. pr, pw := io.Pipe()
  11. go func() {
  12. s := bufio.NewScanner(pr)
  13. for s.Scan() {
  14. l.Log("msg", s.Text())
  15. }
  16. if err := s.Err(); err != nil {
  17. l.Log("msg", "scanner error", "err", err)
  18. }
  19. }()
  20. return pw
  21. }