python - 如何使用 click_log 控制具有多个模块的 python 项目中的日志记录级别?
问题描述
我有一个使用Click和click-log的 Python cli 项目。我的项目有两个模块cli.py
和doit.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
?
解决方案
我找到了以下解决方案:
我在 main 中分配doit
logger 变量,cli.py
如下所示:
# --- Excerpt from cli.py ---
.
.
.
import doit
log = logging.getLogger(__name__)
doit.log = log
click_log.basic_config(log)
.
.
.
我对这个解决方案不太满意。- 将记录器变量设置为 中的同一个对象看起来很复杂cli.py
,但这是我使用 click_log 能想到的最好的方法。这在我看来不是很
推荐阅读
- javascript - 构建自己的状态管理器而不是使用 Redux 或 Context API 是不是一种不好的做法?
- python - 如何对帮助命令进行描述?
- typescript - 强制未知属性隐式解析为 `never` 而不是 `any`
- python - 如何在同一测试中实现 pytest 夹具和参数化参数作为参数?
- javascript - FormArray Angular中的动态ID
- java - 执行 post 请求进行身份验证时,发出错误 404 Not Found
- mysql - 创建具有每个键的平均计数的表的随机子集
- terraform - 无法使用 terraform0.11 传递元素列表
- swift - Stripe IOS SDK刷卡后如何找回刷卡方式
- java - VSCode Kotlin Spring 错误:未解决的参考