annotate vendor/github.com/sirupsen/logrus/writer.go @ 66:787b5ee0289d draft

Use vendored modules Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Sun, 23 Jul 2023 13:18:53 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
66
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
1 package logrus
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
2
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
3 import (
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
4 "bufio"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
5 "io"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
6 "runtime"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
7 )
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
8
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
9 // Writer at INFO level. See WriterLevel for details.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
10 func (logger *Logger) Writer() *io.PipeWriter {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
11 return logger.WriterLevel(InfoLevel)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
12 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
13
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
14 // WriterLevel returns an io.Writer that can be used to write arbitrary text to
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
15 // the logger at the given log level. Each line written to the writer will be
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
16 // printed in the usual way using formatters and hooks. The writer is part of an
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
17 // io.Pipe and it is the callers responsibility to close the writer when done.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
18 // This can be used to override the standard library logger easily.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
19 func (logger *Logger) WriterLevel(level Level) *io.PipeWriter {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
20 return NewEntry(logger).WriterLevel(level)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
21 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
22
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
23 func (entry *Entry) Writer() *io.PipeWriter {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
24 return entry.WriterLevel(InfoLevel)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
25 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
26
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
27 func (entry *Entry) WriterLevel(level Level) *io.PipeWriter {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
28 reader, writer := io.Pipe()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
29
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
30 var printFunc func(args ...interface{})
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
31
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
32 switch level {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
33 case TraceLevel:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
34 printFunc = entry.Trace
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
35 case DebugLevel:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
36 printFunc = entry.Debug
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
37 case InfoLevel:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
38 printFunc = entry.Info
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
39 case WarnLevel:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
40 printFunc = entry.Warn
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
41 case ErrorLevel:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
42 printFunc = entry.Error
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
43 case FatalLevel:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
44 printFunc = entry.Fatal
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
45 case PanicLevel:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
46 printFunc = entry.Panic
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
47 default:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
48 printFunc = entry.Print
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
49 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
50
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
51 go entry.writerScanner(reader, printFunc)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
52 runtime.SetFinalizer(writer, writerFinalizer)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
53
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
54 return writer
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
55 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
56
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
57 func (entry *Entry) writerScanner(reader *io.PipeReader, printFunc func(args ...interface{})) {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
58 scanner := bufio.NewScanner(reader)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
59 for scanner.Scan() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
60 printFunc(scanner.Text())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
61 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
62 if err := scanner.Err(); err != nil {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
63 entry.Errorf("Error while reading from Writer: %s", err)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
64 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
65 reader.Close()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
66 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
67
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
68 func writerFinalizer(writer *io.PipeWriter) {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
69 writer.Close()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
70 }