首页 > 解决方案 > 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.6and pycharm 2020.1(但至少在过去 3 次更新中有相同的警告)

标签: pythonpython-3.xloggingpycharm

解决方案


此问题在https://youtrack.jetbrains.com/issue/PY-39762上的 PyCharm 错误跟踪器上报告。简而言之: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 版更改: 添加了样式参数。

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

在 3.8 版更改: 添加了 force 参数。


推荐阅读