未提供项目描述
项目描述
flake8-logging-format
Flake8扩展,用于验证(缺少)日志格式字符串
这是什么?
Python logging 支持一个特殊的 extra
关键字,用于传递包含用户定义属性的字典,以包含在日志事件中。确保日志一致性的一种方法始终使用 extra
来传递非常量数据,因此绝不应该使用格式字符串、连接或其他类似技术来构造日志字符串。
换句话说,这样做
logger.info(
"Hello {world}",
extra=dict(
world="Earth"
)
)
而不是这样做
logger.info(
"Hello {world}".format(world=Earth)
)
额外白名单
作为进一步严格的一步,我们可以强制执行extra
字典只使用已知白名单中的键。
用法
flake8 --enable-extra-whitelist
内置的Whitelist
支持使用entry_points
的插件,键为"logging.extra.whitelist"
。每个已注册的入口点必须是一个可调用的函数,该函数返回一个字符串的可迭代对象。
在某些情况下,您可能只想在调试场景中记录敏感数据。这以两种方式得到支持
- 我们不检查
debug
级别的日志行中的logging.extra.whitelist
- 您还可以将关键字前缀为'debug_',并在另一个级别中记录它。您可以安全地假设这些将被过滤出分发的日志。
检测到的违规
G001
日志语句不应使用string.format()
作为其第一个参数G002
日志语句不应使用%
格式化作为其第一个参数G003
日志语句不应使用+
连接作为其第一个参数G004
日志语句不应使用f"..."
作为其第一个参数(仅在Python 3.6+中)G010
日志语句不应使用warn
(使用warning
代替)G100
日志语句不应使用未列入白名单的extra
参数G101
记录语句不应使用与 LogRecord 字段冲突的extra
参数G200
记录语句不应在记录的字符串中包含异常(使用exception
或exc_info=True
)G201
记录语句不应使用error(..., exc_info=True)
(应使用exception(...)
代替)G202
记录语句不应在exception
中使用冗余的exc_info=True
这些违规行为默认是禁用的。要为您的项目启用它们,请在 setup.cfg
中指定代码
[flake8]
enable-extensions=G
动机
我们的动机与平衡我们团队和客户的需求有关。一方面,开发人员和一线支持人员应该能够查看应用程序日志。另一方面,我们的客户不希望他们的数据与任何人共享,包括内部员工。
实现方法有两种
-
通过尝试防止在日志中使用字符串连接(与标准日志
extra
字典中的显式变量传递相比) -
通过提供(可选)机制以白名单形式列出可能出现在
extra
字典中的字段名称
当然,这 不会 阻止开发人员做类似的事情
extra=dict(
user_id=user.name,
)
但是,避免这种情况最终会回到其他流程,如拉取请求、代码审查和内部政策。
项目详情
关闭
flake8_logging_format-2024.24.12-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7d93c2107354b10a05b1a0d8ccd3a9bfb793aee108007765114c958a7541d674 |
|
MD5 | 89699c7f5ef93af5120430139c98ed41 |
|
BLAKE2b-256 | 700815fa53eea2c9569d4b19d8bbe9d87c87d7bb153cf1dee24ceb28343bd51b |