globality-corp / flake8-logging-format

Flake8 extension to validate (lack of) logging format strings
Apache License 2.0
134 stars 21 forks source link

Check when extra in log override default fields #17

Closed orsinium closed 3 years ago

orsinium commented 5 years ago

When passed to logger extra parameters overwrite default logging fields like name, lineno or message, logging raises KeyError exception at runtime. It will be very useful to find out this at static checks stage.

Example:

import logging
logging.warning('msg', extra=dict(name='test'))

This raises next exception:

KeyError: "Attempt to overwrite 'name' in LogRecord"
orsinium commented 5 years ago

From python-json-logger:

RESERVED_ATTRS = (
    'args', 'asctime', 'created', 'exc_info', 'exc_text', 'filename',
    'funcName', 'levelname', 'levelno', 'lineno', 'module',
    'msecs', 'message', 'msg', 'name', 'pathname', 'process',
    'processName', 'relativeCreated', 'stack_info', 'thread', 'threadName')