-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTODO.txt
105 lines (84 loc) · 2.97 KB
/
TODO.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# TODO
? Rearrange labels on scoring charts in order matching their dots
? Workflow keep-alive
https://github.com/liskin/gh-workflow-keepalive
* Warning levels in top-level README.md
? Show complex definitions, log traces, and attribute groups on a web page
* Use json.Expect and reflect.DeepEqual()/assert.Equal() more often
* Creator could have:
- pre-logMap filters to clean up bad log formats
- post-logMap filters to clean up logMap after parsing JSON
- feeder fn to load bytes.Buffer with JSON for non-standard logging
? should this go into some bytes.Buffer/map[string]any result object?
- NewResultObject(preFilters, postFilters) -> *ResultObject
- ro.Writer() -> io.Writer
- ro.Push(b []byte) -> error // instead of Writer()
- ro.PreFilter() -> error // pre-logMap filters
- ro.LogMap() -> (map[string]any, error)
- ro.PostFilter() -> error // post-logMap filters
# Less Likely
* Should handlers/flash/pools.go be moved to internal (or infra) as a utility?
Maybe not bother until it's needed somewhere else.
* Is there a way to figure out which handlers can use ReplaceAttr effectively
based on which warnings they throw? See Data section at end for some thoughts.
* ReplAttr filters:
* caller -> source group
* source group -> caller
* Check for package compilation
- Utility to process entries from Go package-linkage whatever
in order to create usable tree view.
- `go mod graph` only shows the `go.mod` dependencies.
- Package repository doesn't generate executable.
* Is there a way to avoid crashing when updates to slog handlers blow up?
- Probably not.
# Global
* Should slog.Attr cache the value of Kind()?
* Why is there one number of allocs in benchmark results?
- there are 61 buckets in the data I found
- seems like it's just choosing one for some reason
- pick the biggest bucket?
* Would slog speed up if slog.Attr cached the value of Keep()?
# Notes
> List of goland:noinspection codes (doesn't always work):
- https://github.com/JetBrains/qodana-profiles/blob/master/.idea/inspectionProfiles/qodana.recommended.full.xml
> How to kick off pkg.go.dev:
- curl https://sum.golang.org/lookup/github.com/madkins23/go-slog@<release-tag>
# Data
NoReplAttr
Chanchal Zap
Phsym Zerolog
NoReplAttrBasic
Chanchal Zap
Samber Logrus
Samber Zap
Samber Zerolog
MessageKey
Phsym Zerolog
Samber Zerolog
EmptyAttributes
Phsym Zerolog
Samber Logrus
Samber Zap
Samber Zerolog
LevelCase
Chanchal Zap
Phsym Zerolog
Samber Logrus
Samber Zap
Samber Zerolog
So...
X Can't use
C Can change attribute but not 'delete' it by returning empty
N NoReplAttr
NB NoReplAttrBasic
M MessageKey
E EmptyAttributes
L Level Case
X NB L chanchal/zaphandler
madkins/flash
madkins/sloggy
XC N MEL phsym/zeroslog
C B EL samber/slog-logrus
C B EL samber/slog-zap
C B MEL samber/slog-zerolog
slog/JSONHandler