Minor defects and "later" improvements: things noticed along the way and not fixed right away. Bigger plans are in todo.md. A resolved item is removed from here; history stays in git and CHANGELOG.md.
Format: title, where it shows up, what is wrong, how to fix it.
Where: NewLoggerCtx, NewNamedLoggerCtx and Logger.WithContext.
What is wrong: the constructors already call WithContext; calling it again with the same context writes the field twice.
How to fix: mark a logger that already has the context fields and do not add them again; or keep it as documentation only (currently described in docs/usage.md).
Where: makeOptions in backend.go.
What is wrong: caller is added only if the most verbose level at Init is debug or trace. A service started at info and raised to debug with SetLevel writes records without a caller.
How to fix: add the caller based on the record level instead of at backend build time, after measuring the cost; or add a config option.
Where: logging.go, NewLogger and friends outside Default.
What is wrong: a logger created before Init stays on the previous backend.
How to fix: use logging.Default in package variables. This is documented; the mechanism stays as is.
Where: applyLevelsRequest in levels_http.go.
What is wrong: a body over the 4 KiB limit (http.MaxBytesReader) is reported as 400 together with other malformed requests; 413 would be more precise.
How to fix: detect *http.MaxBytesError (Go 1.19+; on 1.18 compare the error text or count bytes manually) and answer 413.