python - Pycharm 无法识别 logging.basicConfig 处理程序参数
问题描述
我有一个python
使用 pythonlogging
库一段时间的应用程序,用于在屏幕上和按时旋转文件打印消息,并且工作正常。
日志记录配置如下:
import logging
from logging.handlers import TimedRotatingFileHandler
logging.basicConfig(level=logging.INFO if debug is not True else logging.DEBUG,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
handlers=[
TimedRotatingFileHandler(log_filename, when='midnight', interval=1),
logging.StreamHandler()
]
)
我的问题是 PyCharm 不断突出显示logging.basicConfig
配置的一部分,并发出以下警告:
意外的参数
可能的被调用者:
basicConfig(*, filename: Optional[str]=..., filemode: str=..., format: str=..., datefmt: Optional[str]=..., level: Union[int, str,无]=...,流:IO[str]=...) basicConfig()
检查信息:报告声明的参数和实际参数之间的差异,以及不正确的参数(例如重复的命名参数)和不正确的参数顺序。装饰器也被分析了。
handlers=[...]
只有当我删除部分代码时它才会消失。
的论点是否在basicConfig
特定版本上发生了变化?如果是,实现相同目标的建议方法是什么?
我正在使用python 3.6
and pycharm 2020.1
(但至少在过去 3 次更新中有相同的警告)
解决方案
此问题在https://youtrack.jetbrains.com/issue/PY-39762上的 PyCharm 错误跟踪器上报告。简而言之:basicConfig
Python 3 中的新关键字参数,例如handler
,无法识别。
该问题还提到了一种解决方法:
将插入符号放在
basicConfig
- 右键单击 - 转到 - 声明或用法 - 单击左侧的星号(在排水沟上) -logging/__init__.pyi
应该打开 - 用 . 注释所有basicConfig
定义@overload
。
我测试了它并且它有效。就我而言,PyCharm 不再抱怨force=True
争论。
basicConfig 的参数是否在特定版本上发生了变化?
您可以随时查看文档: https ://docs.python.org/3/library/logging.html#logging.basicConfig :
在 3.2 版更改: 添加了样式参数。
在 3.3 版更改: 添加了 handlers 参数。添加了附加检查以捕获指定不兼容参数的情况(例如,处理程序与流或文件名一起,或流与文件名一起)。
在 3.8 版更改: 添加了 force 参数。
推荐阅读
- javascript - 当我使用 destroy() 函数时,为什么 jquery-jcrop 会破坏我的 Leaflet 地图?
- php - 未找到列:1054 未知列“字段列表”中的“coin_user.symbol”
- javascript - 拉伸和旋转 div 元素(JS 变换)
- terraform - 是否可以在 terraform 提供程序中要求独占或资源属性?如何?
- javascript - 如何在保持对构造函数变量的访问的同时进行可变间隔循环?
- c++ - 如何在 O(sqrt(N)) 时间复杂度中解决“X^2 - Y 是完美平方,X, Y ≤ N”?
- python - 如何在与 Python 后端相同的端口上有效地提供 React 文件
- python - (-212:解析错误)不支持的激活:函数“ReadDarknetFromCfgStream”中的错误
- linux - 无法从 linux 发行版 (wsl 2) 中挂载 /var/run/docker.sock
- javascript - 贝宝订阅通行证订阅者信息