常用内置模块--logginghashlib

Posted zhangbingsheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用内置模块--logginghashlib相关的知识,希望对你有一定的参考价值。

一、logging模块

1、logging作用

   1. 控制日志级别
   2. 控制日志格式
   3. 控制输出的目标为文件

2、日志级别

1 logging.debug(debug日志) # 10
2 logging.info(info日志) # 20
3 logging.warning(warning日志) #30
4 logging.error(error日志)#40
5 logging.critical(critical日志) #50

3、示例

import logging

# 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(ffffffff)

4、log配置字典

LOGGING_DIC = {
    version: 1,
    disable_existing_loggers: False,
    formatters: {
        standard: {
            format: standard_format
        },
        simple: {
            format: simple_format
        },
    },
    filters: {},
    handlers: {
        #打印到终端的日志
        ch: {
            level: DEBUG,
            class: logging.StreamHandler,  # 打印到终端
            formatter: simple
        },
        #打印到a1.log文件的日志
        fh1: {
            level: DEBUG,
            class: logging.FileHandler,  # 保存到文件
            formatter: standard,
            filename: fh1_path,  # 日志文件的路径
            encoding: utf-8,  # 日志文件的编码,再也不用担心中文log乱码了
        },
        # 打印到a2.log文件的日志
        fh2: {
            level: DEBUG,
            class: logging.FileHandler,  # 保存到文件
            formatter: simple,
            filename: fh2_path,  # 日志文件的路径
            encoding: utf-8,  # 日志文件的编码,再也不用担心中文log乱码了
        },

    },
    loggers: {
        ‘‘: {
            handlers: [fh1, fh2, ch],
            level: DEBUG,
        },
    },
}
技术图片
logging.config.dictConfig(settings.LOGGING_DIC)

logger1=logging.getLogger(用户交易)
#logger1-> fh1,fh2,ch
logger1.info(复古风刚刚兴起)

logger2=logging.getLogger(用户权限)
#logger2-> fh1,fh2,ch
logger2.error(TOm没有执行权限)
调用log配置字典

二、hashlib模块

十 hashlib模块
# 1、什么叫hash:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, 
SHA512 ,MD5 算法),该算法接受传入的内容,经过运算得到一串hash值
# 2、hash值的特点是: #2.1 只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验 #2.2 不能由hash值返解成内容=======》把密码做成hash值,不应该在网络传输明文密码 #2.3 只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的

 hash算法就像一座工厂,工厂接收你送来的原材料(可以用m.update()为工厂运送原材料),经过加工返回的产品就是hash值

import hashlib

# 方法一、
# 1. 造出一个hash工厂
m = hashlib.md5()   #=hashlib.sha256()

# 2. 给工厂运送原材料
m.update(hello_baby.encode(utf-8))   # 必须是bytes类型
m.update(love_you.encode(utf-8))

# 3. 产出产品
print(m.hexdigest())    # 43a09074cc658f190d053f223dcb4497


# 方法二、
# 1. 造出一个hash工厂
m = hashlib.md5(hello_baby.encode(utf-8))

# 2. 给工厂运送原材料
m.update(love_you.encode(utf-8))

# 3. 产出产品
print(m.hexdigest())    # 43a09074cc658f190d053f223dcb4497
技术图片
# 一、文件校验
m = hashlib.md5()

with open(test.txt,rb) as f:
    for line in f:
        m.update(line)

print(m.hexdigest())


# 二、密码加密
password = input(>>:).strip()

m = hashlib.md5()
m.update(password.encode(utf-8))
print(m.hexdigest())

# 密码加盐处理思想,可以在用户输入的密码中加入其他的字符,例如:
password = input(>>:).strip()
m = hashlib.md5()
m.update(天王盖地虎.encode(utf-8))   # 进行加盐处理
m.update(password.encode(utf-8))
print(m.hexdigest())
实际应用
# hmac 模块,用于强制性的加盐处理
 
import hmac
 
m = hmac.new(宝塔镇河妖.encode(utf-8))   # new(必须要传入位置参数)
m.update(abc154728.encode(utf-8))
 
print(m.hexdigest())

 

以上是关于常用内置模块--logginghashlib的主要内容,如果未能解决你的问题,请参考以下文章

第22天 常用模块三

day15-python常用内置模块的使用

Python基础_20191102

python笔记--内置模块

学习笔记(11月10日)--python常用内置模块的使用(logging, os, command)

Python常用内置模块