logging-not-lazy / W1201ΒΆ

Message emitted:

Use %s formatting in logging functions

Description:

Used when a logging statement has a call form of "logging.<logging method>(format_string % (format_args...))". Use another type of string formatting instead. You can use % formatting but leave interpolation to the logging function by passing the parameters as arguments. If logging-fstring-interpolation is disabled then you can use fstring formatting. If logging-format-interpolation is disabled then you can use str.format.

Problematic code:

import logging

try:
    function()
except Exception as e:
    logging.error("Error occurred: %s" % e)  # [logging-not-lazy]
    raise

Correct code:

import logging

try:
    function()
except Exception as e:
    logging.error("Error occurred: %s", e)
    raise

Additional details:

Another reasonable option is to use f-strings. If you want to do that, you need to enable logging-not-lazy and disable logging-fstring-interpolation.

Related links:

Created by the logging checker.