跳到内容

logging-redundant-exc-info (G202)

派生自 flake8-logging-format linter。

作用

检查日志语句中冗余的 exc_info 关键字参数。

为什么这不好?

对于 logging.exceptionexc_info 默认为 True;对于 logging.errorexc_info 默认为 False

logging.exception 调用传递 exc_info=True 是冗余的,向 logging.error 调用传递 exc_info=False 也是冗余的。

已知问题

此规则通过启发式方法检测 logging 模块的使用。具体来说,它匹配:

  • logging 模块本身的使用(例如,import logging; logging.info(...))。
  • flask.current_app.logger 的使用(例如,from flask import current_app; current_app.logger.info(...))。
  • 名称以 log 开头或以 loggerlogging 结尾的对象,当在定义它们的同一文件中使用时(例如,logger = logging.getLogger(); logger.info(...))。
  • 通过 lint.logger-objects 设置标记为记录器的导入对象,该设置可用于针对共享记录器对象强制执行这些规则(例如,当 lint.logger-objects 设置为 ["module.logger"] 时,from module import logger; logger.info(...))。

示例

import logging

try:
    ...
except ValueError:
    logging.exception("Exception occurred", exc_info=True)

建议改为

import logging

try:
    ...
except ValueError:
    logging.exception("Exception occurred")

Options (选项)

参考