MCPcopy
hub / github.com/rs/zerolog / Write

Method Write

console.go:122–174  ·  view source on GitHub ↗

Write transforms the JSON input with formatters and appends to w.Out.

(p []byte)

Source from the content-addressed store, hash-verified

120
121// Write transforms the JSON input with formatters and appends to w.Out.
122func (w ConsoleWriter) Write(p []byte) (n int, err error) {
123 // Fix color on Windows
124 if w.Out == os.Stdout || w.Out == os.Stderr {
125 w.Out = colorable.NewColorable(w.Out.(*os.File))
126 }
127
128 if w.PartsOrder == nil {
129 w.PartsOrder = consoleDefaultPartsOrder()
130 }
131
132 var buf = consoleBufPool.Get().(*bytes.Buffer)
133 defer func() {
134 buf.Reset()
135 consoleBufPool.Put(buf)
136 }()
137
138 var evt map[string]interface{}
139 p = decodeIfBinaryToBytes(p)
140 d := json.NewDecoder(bytes.NewReader(p))
141 d.UseNumber()
142 err = d.Decode(&evt)
143 if err != nil {
144 return n, fmt.Errorf("cannot decode event: %s", err)
145 }
146
147 if w.FormatPrepare != nil {
148 err = w.FormatPrepare(evt)
149 if err != nil {
150 return n, err
151 }
152 }
153
154 for _, p := range w.PartsOrder {
155 w.writePart(buf, evt, p)
156 }
157
158 w.writeFields(evt, buf)
159
160 if w.FormatExtra != nil {
161 err = w.FormatExtra(evt, buf)
162 if err != nil {
163 return n, err
164 }
165 }
166
167 err = buf.WriteByte('\n')
168 if err != nil {
169 return n, err
170 }
171
172 _, err = buf.WriteTo(w.Out)
173 return len(p), err
174}
175
176// Call the underlying writer's Close method if it is an io.Closer. Otherwise
177// does nothing.

Callers 3

TestConsoleWriterFunction · 0.95
BenchmarkConsoleWriterFunction · 0.95

Calls 5

writePartMethod · 0.95
writeFieldsMethod · 0.95
consoleDefaultPartsOrderFunction · 0.85
ResetMethod · 0.80
decodeIfBinaryToBytesFunction · 0.70

Tested by 3

TestConsoleWriterFunction · 0.76
BenchmarkConsoleWriterFunction · 0.76