zoukankan      html  css  js  c++  java
  • logging日志模块,hashlib hash算法相关的库,

    logging:
    功能完善的日志模块
    import logging

    #日志的级别
    logging.debug("这是个调试信息")#级别10
    #常规信息
    logging.info("常规信息")#20
    #警告信息
    logging.warning("警告信息")#30
    #错误信息
    logging.error("错误信息")#40
    #严重错误
    logging.critical("严重错误")#50
    #在logging模块中有对应的常量来标识级别
    #在默认情况下 默认的级别 30 WARING 日志输出位置是控制台

    #2.自定义日志的配置
    logging.basicConfig(
    filename="a.log",
    filemode="at",
    level=10,
    format="%(asctime)s %(levelname)s %(funcName)s %(lineno)s %(message)s",
    datefmt="%Y-%m-%d %X %p"
    )
    logging.debug("这是个错误信息")

    #日志模块的四个核心角色
    '''
    1.logger 日志生成器(生成后需要看一下级别 当前生成级别比设置的级别低 就不往下进行了)
    2.filter 过滤器(根据指定的过滤逻辑进行过滤)->不常用
    3.handler 处理器(按照formatter指定的格式输出)
    4.formatter 格式处理器 控制输出格式

    '''
    #1.创建一个日志生成器
    mylog=logging.getLogger("mylog")
    #设置生成器级别
    mylog.setLevel(logging.DEBUG)
    #2.搞一个日志处理器
    fh=logging.FileHandler("b.log",encoding="utf-8")
    #3.搞一个格式处理器
    fm=logging.Formatter("%(levelname)s %(funcName)s %(lineno)s %(message)s",
    datefmt="%Y-%m-%d %X %p")
    #4.将三个对象进行关联
    mylog.addHandler(fh)
    fh.setFormatter(fm)
    #测试
    mylog.debug("mylog 的 测试4")

    #日志的继承
    logg1=logging.getLogger("father")
    logg2=logging.getLogger("father.son")
    logg3=logging.getLogger("father.son.grandson")
    #默认值Ture 标识 有继承关系 当子日记产生日志时候 给它的父级及上级都发一份
    logg3.propagate=False
    fh=logging.FileHandler("b.log",encoding="utf-8")
    fm=logging.Formatter("%(levelname)s %(funcName)s %(lineno)s %(message)s",
    datefmt="%Y-%m-%d %X %p")
    logg1.addHandler(fh)
    logg2.addHandler(fh)
    logg3.addHandler(fh)
    fh.setFormatter(fm)
    logg2.warning("father.son.log")
    import logging.config
    #以字典来配置日志 传入一个字典对象 就不需要再在上面编写一堆代码了
    logging.config.dictConfig()

    #流处理器
    log1=logging.getLogger("a")
    #输出到文件
    fh=logging.FileHandler("c.log",encoding="utf-8")
    #输出到控制台
    sh=logging.StreamHandler()

    log1.addHandler(sh)
    fm=logging.Formatter("%(levelname)s %(funcName)s %(lineno)s %(message)s",
    datefmt="%Y-%m-%d %X %p")
    sh.setFormatter(fm)
    log1.waring("测试!")


    import conf.settings
    import logging.config
    def log():
    logging.config.dictConfig(conf.settings.LOGGING_DIC)
    loger=logging.getLogger("mylog")
    loger.warning("警告!")




    hashlib:
    hash算法相关的库
    算法怎么算不需要关心
    我们关心的重点是 算出来的结果有什么用

    """
    hash lib
    hash 是一种算法 是将一个任意长度的数据 根据计算 得到一个固定长度特征码
    特征:不同输入 可能会有相同的结果(几率比较小)
    相同的输入 必然得到相同结果
    由于散列(特征)的性质 从原理来看是不可能反解
    1 . 用来验证两个输入的数据是否一致
    密码验证:
    123321 jahsaishajhsjahjas
    chient 加密后结果 server 拿到加密后
    2 . 验证数据是否被篡改 比如游戏安装包 有没有被改过
    为了防止别人撞库 可以用update进行加严处理

    """
    # 撞库破解的原理 有人事先把常见的明文和密文的对应关系 存到数据库
    #运气好可以查到

    import hashlib
    m=hashlib.md5("1yanhui23".encode("utf-8"))
    print(m.hexdigest())
    #加严
    m.update("dsdfgsfzds".encode("utf-8"))
    print(m.hexdigest())
    #定义时直接加严
    import hmac
    h=hmac.new("dsdfgsfzds".encode("utf-8"))
    h.update("123".encode("utf-8"))
    print(h.hexdigest())


  • 相关阅读:
    第01组 Beta冲刺(4-5)
    第01组 Beta冲刺(3-5)
    第01组 Beta冲刺(2-5)
    第01组 Beta冲刺(1-5)
    等价类划分-一个程序输入三个整数,判断三角形是不等边,还是等腰还是等边
    Jmeter入门(8)- Jmeter关联
    Jmeter发送数据库请求(JDBC Request)报错
    Jmeter入门(7)- 连接数据库
    Jmeter入门(6)- 参数化
    Jmeter入门(5)- jmeter取样器的HTTP请求
  • 原文地址:https://www.cnblogs.com/yanhui1995/p/9812619.html
Copyright © 2011-2022 走看看