9 func (logger *Logger) Writer() *io.PipeWriter {
10 return logger.WriterLevel(InfoLevel)
13 func (logger *Logger) WriterLevel(level Level) *io.PipeWriter {
14 return NewEntry(logger).WriterLevel(level)
17 func (entry *Entry) Writer() *io.PipeWriter {
18 return entry.WriterLevel(InfoLevel)
21 func (entry *Entry) WriterLevel(level Level) *io.PipeWriter {
22 reader, writer := io.Pipe()
24 var printFunc func(args ...interface{})
28 printFunc = entry.Debug
30 printFunc = entry.Info
32 printFunc = entry.Warn
34 printFunc = entry.Error
36 printFunc = entry.Fatal
38 printFunc = entry.Panic
40 printFunc = entry.Print
43 go entry.writerScanner(reader, printFunc)
44 runtime.SetFinalizer(writer, writerFinalizer)
49 func (entry *Entry) writerScanner(reader *io.PipeReader, printFunc func(args ...interface{})) {
50 scanner := bufio.NewScanner(reader)
52 printFunc(scanner.Text())
54 if err := scanner.Err(); err != nil {
55 entry.Errorf("Error while reading from Writer: %s", err)
60 func writerFinalizer(writer *io.PipeWriter) {