zoukankan      html  css  js  c++  java
  • Python入门学习-DAY18-包、logging模块使用

    1. 什么是包
    包就是一个包含有__init__.py文件的文件夹
    包本质就是一种模块,即包是用包导入使用的,包内部包含的文件也都是用来被导入使用

    2 为何要用包
    包是文件夹,那文件夹就是用来组织文件的

    在python2中,包下必须有一个__init__.py文件,而python3中即便是没有也不会报错

    首次导入包,发送三件事,
      1. 以包下的__init_.py文件为基准来产生一个名称空间
      2. 执行包下的__init_.py文件的代码,将执行过程中产生的名字都丢到名称空间中
      3. 在当前执行文件中拿到一个名字p1,该p1就是指向__init__.py名称空间的

    总结包的使用无非注意三点:
      1. 但凡是在导入语句中带点的,点的左边都必须是一个包
      2. 导入包就是在导包下的__init__.py文件
      3. 如果使用绝对导入,绝对导入的起始位置都是以包的顶级目录为起始点
      4. 但是包内部模块的导入通常应该使用相对导入,用.代表当前所在的文件(而非执行文件),..代表上一级
    强调:
      1. 相对导入只能包内部的模块之间互相导入使用
      2. ..上一级不能超出顶级包

    logging模块

    import 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,
    )

    logging.debug('debug日志') # 10
    logging.info('info日志') # 20
    logging.warning('warning日志') #30
    logging.error('error日志')#40
    logging.critical('critical日志') #50

    # 1. logger对象: 负责生产各种级别的日志
    logger1 = logging.getLogger('用户交易') # 日志名用来标识日志的与什么业务有关

    # 2. filter对象: 过滤日志

    # 3. handler对象: 控制日志输出目标位置
    fh1 = logging.FileHandler('a1.log',encoding='utf-8')
    fh2 = logging.FileHandler('a2.log',encoding='utf-8')
    ch = logging.StreamHandler()

    # 4. formmater对象
    formatter1 = logging.Formatter(
    fmt='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S %p'
    )

    formatter2 = logging.Formatter(
    fmt='%(asctime)s - %(levelname)s : %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S %p'
    )

    # 5. 绑定logger对象与handler对象
    logger1.addHandler(fh1)
    logger1.addHandler(fh2)
    logger1.addHandler(ch)

    # 6. 绑定handler对象与formatter对象

    fh1.setFormatter(formatter1)
    fh2.setFormatter(formatter1)
    ch.setFormatter(formatter2)

    # 7. 设置日志级别,有logger对象与handler对象两层关卡,必须都放行最终日志才会放行,通常二者级别相同
    logger1.setLevel(10)
    fh1.setLevel(10)
    fh2.setLevel(10)
    ch.setLevel(10)

    # 8. 使用logger对象产生日志
    logger1.info('alex给egon转账1个亿')

  • 相关阅读:
    第20月第30日 集体智慧编程
    第20月第29天 cocoa抽象工厂 cocoapods组件化 cocoapods升级
    第20月第28天 tensorflow
    第20月第27天 游戏编程的人工智能
    第20月第22天 2016计算机大会后记——机器学习:发展与未来
    第20月第18天 小码哥swift
    第20月第17天 mvvm 多次点击push -ObjC
    第20月第14天 objc_getAssociatedObject _cmd
    第20月第9天 paddlepaddle
    第20月第4天 pycharm utf-8
  • 原文地址:https://www.cnblogs.com/xvchengqi/p/9456050.html
Copyright © 2011-2022 走看看