
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”所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)