Adrian, you may want to read this thread as well: LogRecord construction: Why is extra not passed? - #12 by aathan
Like you, I would like to see LogRecord construction be more flexible than the current system – specifically, that LogRecord creation at the logging site should accessible to users of the logging framework in ways that are on par with the logging framework itself.
In fact, the suggestion I made would allow you to do what you want.
Also I completely agree with your sentiments about improving stdlib and Python’s logging module. Structured logging is an important modern facility. Rust’s Tracing crate may be of interest there.