Skip to content

Commit 4d60f86

Browse files
committed
Pretty-print driver.Valuer
1 parent ec11fd4 commit 4d60f86

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

internal/entryhuman/entry.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package entryhuman
44

55
import (
66
"bytes"
7+
"database/sql/driver"
78
"encoding/json"
89
"fmt"
910
"io"
@@ -56,6 +57,13 @@ func reset(w io.Writer, termW io.Writer) {
5657
}
5758

5859
func formatValue(v interface{}) string {
60+
if vr, ok := v.(driver.Valuer); ok {
61+
var err error
62+
v, err = vr.Value()
63+
if err != nil {
64+
return fmt.Sprintf("error calling Value: %v", err)
65+
}
66+
}
5967
if v == nil {
6068
return "<nil>"
6169
}

internal/entryhuman/entry_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package entryhuman_test
22

33
import (
44
"bytes"
5+
"database/sql"
56
"flag"
67
"fmt"
78
"io"
@@ -108,6 +109,16 @@ func TestEntry(t *testing.T) {
108109
),
109110
},
110111
},
112+
{
113+
"driverValue",
114+
slog.SinkEntry{
115+
Level: slog.LevelWarn,
116+
Fields: slog.M(
117+
slog.F("val", sql.NullString{String: "dog", Valid: true}),
118+
slog.F("inval", sql.NullString{String: "cat", Valid: false}),
119+
),
120+
},
121+
},
111122
{
112123
"object",
113124
slog.SinkEntry{
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
0001-01-01 00:00:00.000 [warn] val=dog inval=<nil>

0 commit comments

Comments
 (0)