首页 > 解决方案 > 如何使用 click_log 控制具有多个模块的 python 项目中的日志记录级别?

问题描述

我有一个使用Clickclick-log的 Python cli 项目。我的项目有两个模块cli.pydoit.py.

cli.py在我使用的主模块中

log = logging.getLogger(__name__)
click_log.basic_config(log)

正如 click_log 文档中所建议的那样,此模块中的日志记录可以通过--verbosity命令行上的选项完全控制。

在另一个模块doit.py 中,我将记录器实例化为最佳实践

log = logging.getLogger(__name__)

然而,这会导致模块中的日志级别始终doit设置WARNING独立于命令行选项。

如何以同样适用于辅助模块的方式使用 click_log doit.py

标签: pythonloggingcommand-line-interface

解决方案


我找到了以下解决方案:

我在 main 中分配doitlogger 变量,cli.py如下所示:

# --- Excerpt from cli.py ---
.
.
.
import doit

log = logging.getLogger(__name__)
doit.log = log
click_log.basic_config(log)
.
.
.

我对这个解决方案不太满意。- 将记录器变量设置为 中的同一个对象看起来很复杂cli.py,但这是我使用 click_log 能想到的最好的方法。这在我看来不是很


推荐阅读