zoukankan      html  css  js  c++  java
  • 规范目录,常用模块之日志模块

    1.规范目录结构
    bin 存放执行文件
    conf 存放配置文件
    core 核心业务逻辑
    db 存放数据处理相关
    lib 公共代码和第三方的模块
    log 日志
    readme 是一个文本文件,用于描述应用程序

    1.使用规范目录结构的好处
    -是项目结构更清晰
    -提高可读性
    规范目录结构不是固定,可以根据实际需求进行添加修改

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

    import os
    os.path.dirname#获取该路径的上一级路径
    BASE_DIR=os.path.dirname(os.path.dirname(__file__))
    import sys
    sys.path.append(BASE_DIR)
    获取当前执行文件的完整路径
    print(__file__)


    import os,sys
    sys.path.append(os.path.dirname(os.path.dirname(__file__)))


    2.常用模块
    logging time random os
    logging 日志模块
    什么是日志
      就是生活中的日记 用于记录什么时间发生了什么事情

    为什么要记
    就是为了在以后记录程序出现问题的时候,能够通过日志来找到问题的原因

    怎么记日志
    可以自己实现
    当然有功能更强大的logging模块
    import logging

    logging.debug('debug')
    logging.info('info')
    logging.warning('warning')
    logging.error('error')
    logging.critical('critical')

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

    为什么要分级别?
    为了在后期查看日志时候方便定位
    logging的默认县市级别为WARNING,低于WARNING级别的都不会被显示
    默认的输出位置是终端
    默认的输出格式 WARNING(级别):root(日志生成器的名字):warning(输出的日志消息)

    修改默认的行为
    日志模块中的四种角色
    1.logger 日志生成器 生成一条日志 可以设置生成日志的级别
    2.filter 日志的过滤器 对logger生成的日志进行过滤
    3.formatter 处理格式的 设置日志的输出格式
    4.handler 处理器 最终负责将日志输出到指定的位置
    handler的级别若低于生成器是没有意义的


    自定义日志生成器
    可以为生成器指定名字 是因为 可以存在多个生成器
    logger=logging.getLogger('logger1')
    设置日志级别
    logging模块内部使用整数区分级别
    此处可以直接写对应整数,但建议写常量
    logger.setLevel(logging.WARNING)

    logger.warning('这是一个警告信息')

    创建一个处理器
    handler=logging.FileHandler('test.log','a',encoding='utf-8')
    fmt=logging.Formatter("%(asctime)s - %(name)s -%(filename)s - %(message)s")
    handler.setFormatter(fmt)

    将handler与生成器绑定
    可以为一个生成器指定多个处理器
    logger.addHandler(handler)

    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
    StreamHandler用于输出到终端
    handler2=logging.StreamHandler()

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

    5.把handler生成器绑定
    logger.addHandler(handler)
    logger.addHandler(handler2)
    name = "bgon"

    logger.debug(name)
  • 相关阅读:
    解决ASP.NET MVC3与FusionCharts乱码问题
    php中sprintf与printf函数用法区别
    常用的CSS缩写语法一些方法小结
    linux中利用iptables+geoip过滤指定IP
    php中magic_quotes_gpc对unserialize的影响
    mysql中权限参数说明
    jquery实现点击页面空白隐藏指定菜单
    asp.net中导出excel数据的方法汇总
    SQL取某个字段最大(小)数值及其相应行的其他字段值的句语
    Dos下查询关闭端口的命令例子
  • 原文地址:https://www.cnblogs.com/gengbinjia/p/10305671.html
Copyright © 2011-2022 走看看