Pycharm 无法识别 logging.basicConfig 处理程序参数

drk*_*tas 9 python logging pycharm python-3.x

我有一个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()
                    ]
                    )
Run Code Online (Sandbox Code Playgroud)

我的问题是 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.6pycharm 2020.1(但至少在过去的 3 次更新中有相同的警告)

AXO*_*AXO 6

此问题已在 PyCharm 错误跟踪器上报告,网址为https://youtrack.jetbrains.com/issue/PY-39762。简而言之:basicConfigPython 3 中的新关键字参数,如handler,无法识别。

该问题还提到了一个解决方法:

将插入符号放在basicConfig- 右键单击​​ - 转到 - 声明或用法 - 单击左侧的星号(在装订线上) -logging/__init__.pyi应打开 - 用 注释所有 basicConfig定义@overload

我测试了它并且它有效。就我而言,PyCharm 不再抱怨force=True争论。

basicConfig 的参数在特定版本上是否发生了变化?

您可以随时查看文档: https ://docs.python.org/3/library/logging.html#logging.basicConfig :

版本 3.2 中的更改:添加了 style 参数。

版本 3.3 中的更改:添加了 handlers 参数。添加了额外的检查来捕获指定不兼容参数的情况(例如,处理程序与流或文件名一起,或流与文件名一起)。

版本 3.8 中的更改:添加了 force 参数。