Commit 45232f2
committed
feat!: add ContextPair to StructuredLogger
Motivation
==========
`addContext` has one sharp edge on it that seems to come up a lot during
onboarding: if you want to add a single context element, the syntax is
unintuitive.
Say we want to add the context `"foo" -> "bar"` to a logger. Naturally,
one might reach for `addContext(pairs: (String, Shown)*)`, but alas,
after erasure we have
```scala
logger.addContext(
"foo" -> "bar" // Tuple2
)
```
which doesn't conform to either of `Map` or `Seq`. This leaves us with
these options:
```scala
logger.addContext(
Map(
"foo" -> bar.show
)
)
logger.addContext(
"foo" -> (bar: Shown)
)
```
Neither feels _great_, and it would be really pleasant to have
consistent syntax for single-element and multi-element context data
without having to use `Map` literals and explicit `.show`/`.toString`.
Result
======
This patch hijacks `StructuredLogger`'s implicit scope to do a bit of
juggling and resolve the erasure issue, and in the process cleans up a
chunk of duplicative code in its descendants.
I've tested this in the work code, and it appears to work as expected
for any subtype of `StructuredLogger`. The signature ain't exactly
beautiful, but the syntactic consistency is gratifying.1 parent ee304de commit 45232f2
4 files changed
Lines changed: 16 additions & 24 deletions
File tree
Lines changed: 0 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
20 | | - | |
21 | 20 | | |
22 | 21 | | |
23 | 22 | | |
| |||
26 | 25 | | |
27 | 26 | | |
28 | 27 | | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | 28 | | |
37 | 29 | | |
38 | 30 | | |
| |||
Lines changed: 15 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
20 | 21 | | |
| 22 | + | |
21 | 23 | | |
22 | 24 | | |
23 | 25 | | |
| |||
36 | 38 | | |
37 | 39 | | |
38 | 40 | | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
39 | 44 | | |
40 | | - | |
| 45 | + | |
41 | 46 | | |
42 | | - | |
43 | | - | |
44 | | - | |
| 47 | + | |
45 | 48 | | |
46 | 49 | | |
47 | 50 | | |
48 | 51 | | |
49 | 52 | | |
50 | 53 | | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
51 | 62 | | |
52 | 63 | | |
53 | 64 | | |
| |||
Lines changed: 1 addition & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
| 23 | + | |
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | 42 | | |
48 | 43 | | |
49 | 44 | | |
| |||
Lines changed: 0 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
20 | 19 | | |
21 | 20 | | |
22 | 21 | | |
| |||
56 | 55 | | |
57 | 56 | | |
58 | 57 | | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | 58 | | |
65 | 59 | | |
66 | 60 | | |
| |||
0 commit comments