python全栈脱产第18天------包的使用和logging模块

一、包的使用

  注意:在python2中,包必须要有一个__init__.py文件,而python3中即使是没有也不会报错

  首次导入包:1.以包下的__init__.py文件为基准产生一个名称空间

        2.执行包下的__init__.py文件的代码,将执行过程中产生的名字都丢到名称空间

        3.在当前执行文件中拿到一个名字,该名字就是指向__init__.py名称空间

  总结包使用的注意点:1.但凡是在导入语句中带点的,点的左边都必须是一个包

            2.导入包就是导包下的__init__.py文件

            3.如果使用绝对导入,绝对导入的起始位置都是以包的顶级目录为起始点

            4.但是包内部模块的导入通常应该使用相对导入,用.代表当前所在文件,..代表上一级

            强调:1.相对导入只能在包内部的模块之间互相导入使用

               2...上一级不能超出顶级包

二、logging模块

  1.控制日志级别

  2.控制日志格式

  3.控制输入的目标为文件

  logging.basicConfig(filename='access.log',
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',
level=10,
)
  4.日志的级别:1.logging.debug()  2.logging.info()  3.logging.warning()  4.logging.error()  5.logging.critical()
  优点:1.能够同时往终端与文件中记录日记  2.能够修改字符串编码
  5.logger对象:负责生产各种级别的日志  logger1=logging.getLogger('用户交易')
  6.fileter对象:过滤文件  
  7.handler对象:控制日志输出目标位置  fh1=logging.FileHandler('a1.log',encoding='utf-8')  ch=logging.StreamHandler()
  8.formmater对象  formatter1=logging.Formatter(fmt='%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s',datefmt='%Y-%m-%d %H:%M:%S %p')
  9.绑定logger对象与handler对象  logger1.addHandler(fh1)
  10.绑定handler对象与formatter对象  fh1.setFormatter(formatter1)
  11.设置日志级别,有logger对象与handler对象两层关卡,必须都放行最终日志才会放行,通常两者级别相同  logger1.setLevel(10)
  12.使用logger对象产生日志  logger1.info('alex给egon转账1亿')
原文地址:https://www.cnblogs.com/zhouyi0316/p/9457130.html