python – NameError:未定义全局名称“logger”

python – NameError:未定义全局名称“logger”,第1张

概述我写了一个logging.json文件,其中设置了日志配置,之后我创建了一个类,其中我的所有方法都在那里但是当我在类中使用logger时它会抛出错误NameError:全局名称’logger’是没有定义的 app.py #/usr/bin/pythonimport sysimport loggingimport timeimport jsonimport osimport loggi 我写了一个logging.Json文件,其中设置了日志配置,之后我创建了一个类,其中我的所有方法都在那里但是当我在类中使用logger时它会抛出错误nameError:全局名称’logger’是没有定义的

app.py

#/usr/bin/pythonimport sysimport loggingimport timeimport Jsonimport osimport logging.configdef setup_logging(default_path='logging.Json',default_level=logging.INFO,env_key='LOG_CFG'):    """Setup logging configuration"""    path = default_path    value = os.getenv(env_key,None)    if value:        path = value    if os.path.exists(path):        with open(path,'rt') as f:            config = Json.load(f)        logging.config.dictConfig(config)    else:        logging.basicConfig(level=default_level)class Generic:        def __init__(self,file_path):                self.file_path = file_path        def check_mime(self):                logger.info('Generic on file {} starts at {}'.format(file_path,time.time()))print 'file path is {}'.format(sys.argv[1])file_path = sys.argv[1]def parser():        parser = Generic(file_path)        parser.check_mime()def main():        print 'This is intended for module purpose only'        setup_logging()        parser()if __name__ == '__main__':        main()

logging.Json

{    "version": 1,"disable_existing_loggers": false,"formatters": {        "simple": {            "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"        }    },"handlers": {        "console": {            "class": "logging.StreamHandler","level": "DEBUG","formatter": "simple","stream": "ext://sys.stdout"        },"info_file_handler": {            "class": "logging.handlers.RotatingfileHandler","level": "INFO","filename": "logs/gp.log","maxBytes": 10485760,"backupCount": 20,"enCoding": "utf8"        },"error_file_handler": {            "class": "logging.handlers.RotatingfileHandler","level": "ERROR","filename": "logs/errors.log","enCoding": "utf8"        }    },"loggers": {        "my_module": {            "level": "ERROR","handlers": ["console"],"propagate": "no"        }    },"root": {        "level": "INFO","handlers": ["console","info_file_handler","error_file_handler"]    }}

问题:

当我运行程序错误

$python app.py /home/default/domain.txtfile path is /home/default/domain.txtThis is intended for module purpose onlyTraceback (most recent call last):  file "app.py",line 44,in <module>    main()  file "app.py",line 41,in main    parser()  file "app.py",line 37,in parser    parser.check_mime()  file "app.py",line 29,in check_mime    logger.info('GenericParsernameError: global name 'logger' is not defined

我在此链接中使用以下日志记录示例[https://fangpenlin.com/posts/2012/08/26/good-logging-practice-in-python/]

关于如何解决这个问题作为记录器的任何建议都不是全局性的,任何使其成为全局的方法.

解决方法 您链接的示例包含:

import logginglogging.basicConfig(level=logging.INFO)logger = logging.getLogger(__name__) #<<<<<<<<<<<<<<<<<<<<

你错过了记录器的定义.

您可以在您的Generic .__ init __()函数中放置self.logger = logging.getLogger(__ name__),也可以在导入后立即定义全局记录器,如示例所示.

总结

以上是内存溢出为你收集整理的python – NameError:未定义全局名称“logger”全部内容,希望文章能够帮你解决python – NameError:未定义全局名称“logger”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1195038.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存