首页 > 代码库 > AttributeError: 'module' object has no attribute 'handlers'--Python子模块导入问题
AttributeError: 'module' object has no attribute 'handlers'--Python子模块导入问题
想使用python的logging模块记录日志,并使用RotatingFileHandler来处理日志以便于在日志文件超过指定的大小后会重新生成新的日志文件。
基本代码如下:
运行时报错:
AttributeError: ‘module‘ object has no attribute ‘handlers‘
原来导入logging模块后并没有自动导入其子模块handlers
Python程序中模块在被访问前必须导入,import logging仅导入了logging模块,而logging是一个拥有子模块的包,这些子模块没有被自动载入。所以在访问签需要明确的导入logging.handlers子模块。
但有时候,在导入一些包时并不需要额外的动作就能自动导入其子模块,这是因为在包的__init__.py文件中进行了这些操作。在另外一些情况下,你导入的另外一些东西也可能会导入logging.handlers模块。无论如何,只要保证访问前
对应的子模块已经导入便可。某些时候一个模块看起来是个包实际上并不是,比如os和os.path。os并非包,它只是提供了其他的模块叫path,你可以通过os.path来访问。
基本代码如下:
import logging logger = logging.getLogger(‘mylogger‘) logger.setLevel(logging.INFO) fh=logging.handlers.RotatingFileHandler(‘/tmp/test.log‘, mode = ‘a‘, maxBytes=10240, backupCount=3, encoding=‘utf-8‘) formatter = logging.Formatter(‘%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s - %(message)s‘) fh.setFormatter(formatter) logger.addHandler(fh) logger.info(‘hello logging‘) logger.warning(‘hello logging‘) logger.error(‘hello logging‘) logger.critical(‘hello logging‘)
运行时报错:
AttributeError: ‘module‘ object has no attribute ‘handlers‘
原来导入logging模块后并没有自动导入其子模块handlers
import logging import logging.handlers ……重新运行,程序正常输出。
Python程序中模块在被访问前必须导入,import logging仅导入了logging模块,而logging是一个拥有子模块的包,这些子模块没有被自动载入。所以在访问签需要明确的导入logging.handlers子模块。
但有时候,在导入一些包时并不需要额外的动作就能自动导入其子模块,这是因为在包的__init__.py文件中进行了这些操作。在另外一些情况下,你导入的另外一些东西也可能会导入logging.handlers模块。无论如何,只要保证访问前
对应的子模块已经导入便可。某些时候一个模块看起来是个包实际上并不是,比如os和os.path。os并非包,它只是提供了其他的模块叫path,你可以通过os.path来访问。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。