Skip to content

Commit 641cc6c

Browse files
committed
Disable HTML escaping in JSON Logger
1 parent dc489b7 commit 641cc6c

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

log/json_logger.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ func (l *jsonLogger) Log(keyvals ...interface{}) error {
3131
}
3232
merge(m, k, v)
3333
}
34-
return json.NewEncoder(l.Writer).Encode(m)
34+
enc := json.NewEncoder(l.Writer)
35+
enc.SetEscapeHTML(false)
36+
return enc.Encode(m)
3537
}
3638

3739
func merge(dst map[string]interface{}, k, v interface{}) {

log/json_logger_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,18 @@ func TestJSONLoggerNilErrorValue(t *testing.T) {
7373
}
7474
}
7575

76+
func TestJSONLoggerNoHTMLEscape(t *testing.T) {
77+
t.Parallel()
78+
buf := &bytes.Buffer{}
79+
logger := log.NewJSONLogger(buf)
80+
if err := logger.Log("k", "<&>"); err != nil {
81+
t.Fatal(err)
82+
}
83+
if want, have := `{"k":"<&>"}`+"\n", buf.String(); want != have {
84+
t.Errorf("\nwant %#v\nhave%#v", want, have)
85+
}
86+
}
87+
7688
// aller implements json.Marshaler, encoding.TextMarshaler, and fmt.Stringer.
7789
type aller struct{}
7890

0 commit comments

Comments
 (0)