规范目录结构

规范目录结构

  使用规范目录结构的好处

    1.使项目结构更清晰

    2.提高可读性

  规范目录结构是不固定的,可以根据实际需求进行添加修改

 

  常见目录如下:

    bin    存放执行文件

    conf    存放配置文件

    core   存放核心业务逻辑

    db    存放数据处理相关

    lib    存放公共代码,和第三方模块

    log     存放日志文件

    readme   是一个文本文件,用于描述应用程序

      __file__   是获得当前执行文件的完整路径

 

    如果你的执行文件不再最外层,那么需要手动将要访问的模块路径加入到sys.path,以下写法是固定的

    import os

    # os.path.dirname 是获取该路径的上一层路径

    BASE_DIR = os.path.dirname(os.path.dirname(__file__))

    import sys

    sys.path.append(BASE_DIR)

 

日志模块

  什么是日志

    就像生活中的日记,用于记录什么时间发生了什么事情

 

  为什么要记日志

    就是为了以后程序出现问题的时候,能通过日志来找到问题的原因

  

  怎么记日志

    可以自己实现

    当然有功能更强大的logging模块

 

  import logging

  #最基本的用法

  logging.debug('debug')

  logging.info('info')

  logging.error('error')

  logging.critical('critical')

  logging.warning('warning')

 

  logging模块将日志分为了五种级别

  

  为什么要分级别

    是为了在后期查看日志的时候方便定位

    logging的默认显示级别是warning,低于warning的级别都不会显示

    默认输出位置是终端

    默认的输出格式 WARNING(级别):root(日志生成器的名字):warning(输出的日志消息)

 

    修改默认行为

    日志模块中的四种角色

      1.logger  日志生成器     生成一条日志  

      2.filter   日志的过滤器   对logger生成的日志进行过滤

      3.formatter 处理格式的      设置日志的输出格式

      4.handler   处理器      最终负责将日志输出到指定的位置

 

    自定义日志生成器

    可以为生成器指定名字,因为可以存在多个生成器

    logger = logging.getLogger("logger1")

    设置日志级别

    logging模块内部使用整数区分级别

    此处可以直接写对应整数,但是建议写常量

    logger.setLevel(logging.WARNING)

    例如:

    logger.warning('警告信息')

 

    创建一个处理器

    例如:

    handler = logging.FileHandler(‘test.log’,'a',encoding='utf-8')

    fm = logging.Formatter('%(asctime)s - %(name)s - %(filename)s - %(message)s')

    handler.setFormatter(fm)

 

    将handler与生成器绑定

    可以为一个生成器指定多个处理器

    logger.addHandler(handler)

    logger.error('这是一个错误信息...')

 

    import logging

    1.获取生成器

    logger = logging.getLogger('mylogger')

    logger.setLevel(10)

    2.格式处理器

    fmt = logging.Formatter('%(levelname)s %(asctime)s %(message)s')

    3.创建handler处理器

    handler = logging.FileHandler('test2.log','a',encoding='utf-8')

      可以绑定多个handler

    handler2 = logging.StreamHandler()

    4.将handler与格式处理器绑定
    handler.setFormatter(fmt)

    

    5.把handler生成器绑定

    logger.addHandler(handler)

 

posted @ 2019-01-22 14:54  -Rye-  阅读(246)  评论(0)    收藏  举报