Codebase list golang-github-jsternberg-zap-logfmt / 2007c94
Import upstream version 1.2.0 Debian Janitor 2 years ago
4 changed file(s) with 114 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
285285 final.AppendString(ent.Level.String())
286286 }
287287 }
288 if ent.Caller.Defined && final.CallerKey != "" {
289 final.addKey(final.CallerKey)
290 cur := final.buf.Len()
291 final.EncodeCaller(ent.Caller, final)
292 if cur == final.buf.Len() {
293 // User-supplied EncodeCaller was a no-op. Fall back to strings to
294 // keep output valid.
295 final.AppendString(ent.Caller.String())
296 }
297 }
288298 if final.MessageKey != "" {
289299 final.addKey(enc.MessageKey)
290300 final.AppendString(ent.Message)
294304 final.buf.Write(enc.buf.Bytes())
295305 }
296306 addFields(final, fields)
307 if ent.Stack != "" && final.StacktraceKey != "" {
308 final.AddString(final.StacktraceKey, ent.Stack)
309 }
297310 if final.LineEnding != "" {
298311 final.buf.AppendString(final.LineEnding)
299312 } else {
55 "time"
66
77 "github.com/stretchr/testify/assert"
8 "go.uber.org/zap"
9 "go.uber.org/zap/buffer"
810 "go.uber.org/zap/zapcore"
911 )
1012
107109 }
108110 assert.Equal(t, expectedPrefix+expected, enc.buf.String(), "Unexpected encoder output after adding a %s as a second field.", desc)
109111 }
112
113 func TestEncodeCaller(t *testing.T) {
114 enc := &logfmtEncoder{buf: bufferpool.Get(), EncoderConfig: &zapcore.EncoderConfig{
115 EncodeTime: zapcore.EpochTimeEncoder,
116 EncodeDuration: zapcore.SecondsDurationEncoder,
117 EncodeCaller: zapcore.ShortCallerEncoder,
118 }}
119
120 var buf *buffer.Buffer
121 var err error
122 encodeEntry := func() {
123 buf, err = enc.EncodeEntry(
124 zapcore.Entry{
125 Level: zapcore.DebugLevel,
126 Time: time.Time{},
127 LoggerName: "test",
128 Message: "caller test",
129 Caller: zapcore.EntryCaller{
130 Defined: true,
131 File: "h2g2.go",
132 Line: 42,
133 },
134 },
135 []zapcore.Field{
136 zap.String("k", "v"),
137 },
138 )
139 }
140
141 encodeEntry()
142 assert.Nil(t, err)
143 assert.Equal(t, "k=v\n", buf.String())
144
145 enc.truncate()
146 enc.EncoderConfig.CallerKey = "caller"
147 encodeEntry()
148 assert.Nil(t, err)
149 assert.Equal(t, "caller=h2g2.go:42 k=v\n", buf.String())
150 }
151
152 func TestEncodeStacktrace(t *testing.T) {
153 enc := &logfmtEncoder{buf: bufferpool.Get(), EncoderConfig: &zapcore.EncoderConfig{
154 EncodeTime: zapcore.EpochTimeEncoder,
155 EncodeDuration: zapcore.SecondsDurationEncoder,
156 }}
157
158 var buf *buffer.Buffer
159 var err error
160 encodeEntry := func() {
161 buf, err = enc.EncodeEntry(
162 zapcore.Entry{
163 Level: zapcore.DebugLevel,
164 Time: time.Time{},
165 LoggerName: "test",
166 Message: "stacktrace test",
167 Stack: `panic: an unexpected error occurred
168
169 goroutine 1 [running]:
170 main.main()
171 /go/src/github.com/jsternberg/myawesomeproject/h2g2.go:4 +0x39
172 `,
173 },
174 []zapcore.Field{
175 zap.String("k", "v"),
176 },
177 )
178 }
179
180 encodeEntry()
181 assert.Nil(t, err)
182 assert.Equal(t, "k=v\n", buf.String())
183
184 enc.truncate()
185 enc.EncoderConfig.StacktraceKey = "stacktrace"
186 encodeEntry()
187 assert.Nil(t, err)
188 assert.Equal(t, `k=v stacktrace="panic: an unexpected error occurred\n\ngoroutine 1 [running]:\nmain.main()\n\t\t/go/src/github.com/jsternberg/myawesomeproject/h2g2.go:4 +0x39\n"
189 `, buf.String())
190 }
0 module github.com/jsternberg/zap-logfmt
1
2 require (
3 github.com/davecgh/go-spew v1.1.0 // indirect
4 github.com/pmezard/go-difflib v1.0.0 // indirect
5 github.com/stretchr/testify v1.2.2
6 go.uber.org/atomic v1.3.2 // indirect
7 go.uber.org/multierr v1.1.0 // indirect
8 go.uber.org/zap v1.9.1
9 )
0 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
2 github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w=
3 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
4 go.uber.org/atomic v1.3.2 h1:2Oa65PReHzfn29GpvgsYwloV9AVFHPDk8tYxt2c2tr4=
5 go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
6 go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI=
7 go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
8 go.uber.org/zap v1.9.1 h1:XCJQEf3W6eZaVwhRBof6ImoYGJSITeKWsyeh3HFu/5o=
9 go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=