Open Carreau opened 1 year ago
See also, https://discuss.python.org/t/safer-logging-methods-for-f-strings-and-new-style-formatting/13802/2 that also discuss that f"" in logs is unsafe.
pylint --disable=all --enable W1202 jupyter_server
, seem to only find 2 out of all the above ones, but if you wish to use a linter this may help
👍 also much better for performance With parameters, if no logging is done, no string formatting is done, while with f"" it will always be done.
FWIW, since logging in our applications is at info or debug level roughly 100% of the time, performance is actually better in practice with f-strings than format-strings for all log statements at info level or above. So this mainly describes the performance benefit of increasing the log level to unusually quiet levels, which is smaller with f-strings than lazy formatting. Still, the difference is not likely to be noticeable except for debug statements which tend to be very frequent, include a lot of to-format data, and are often not displayed.
the is a number os places using f-string in log methods:
This prevent structured logging and post-processing, as the f-string is formatted before being passed to log.
The goal of log taking parameter if for for
self.log.level('format string %s, %r', param_1, param_2 )
, is that you can store the log in a format where you you actually ask "give me all the logs which format strings are 'format string %s, %r'" without having to parse text. And this allow handler like Rich, for example to do proper syntax highlighting, or allow compressed storage of logs indexed by the message.