首页 > 解决方案 > 我想在我的 pyhton 包中创建一个切换变量来启用/禁用整个包的日志记录

问题描述

我在我的 python 包中创建了一个日志记录模块,我正在使用日志记录模块来获取包中其他文件的控制台日志记录实例。现在我想创建一个切换变量,以便我可以禁用或启用整个包中的控制台日志记录。请建议我实施我所描述的方法。

我的示例包结构:

package/
|_ __init__.py
|_ logger.py
|_ moduleA.py
|_ moduleB.py

记录器.py

import logging

""" can I create any get/set kind of implementation here to control a toggle variable 
    based on which I decide the log level to be DEBUG or ERROR for the entire package  """ 


def getLogger(name):
    logger = logging.getLogger(name)
    handler = logging.StreamHandler()
    logger.addHandler(handler)
    logger.setLevel(logging.DEBUG)
    return logger

我在其他模块中使用这个记录器,如下所示

log = logger.getLogger(__name__)
log.info("Hello!")

标签: python-3.xlogging

解决方案


实现您想要的一种常见方法是定义一个环境变量,例如 LOGLEVEL 并在调用setLevel()或时使用它basicConfig()

例子:

import os

logger.setLevel(os.environ.get("LOGLEVEL", "DEBUG"))

旁注:通常不需要创建getLogger自己的函数来允许所有模块共享根记录器。您可以通过在应用程序入口点初始化根记录器并在调用模块__name__时使用变量来完成相同的操作。logging.getLogger()这是关于这种方法的一个很好的解释


推荐阅读