day25 Pyhton学习 MD5加密.日志

一.MD5加密

    MD5是一种不可逆的加密算法. 它是可靠的. 并且安全的. 在python中我们不需要手写这一套算法. 只需要引入一个叫hashlib的模块就能搞定MD5的加密工作

import hashlib

def my_md5(s):
     obj = hashlib.md5(b"fjlksajflkjasfsalwer123dfskjf")#加盐,使md5加密不容易破解,md5()容易破解
     obj.update(s.encode("utf-8")) # 加密的必须是字节
     miwen = obj.hexdigest()
     return miwen
# alex: 99fca4b872fa901aac30c3e952ca786d
username = input("请输入用户名:")
password = input("请输入密码:")
# 数据存储的时候.
# username: my_md5(password)
# 假设现在的用户名和密码分别是
# wusir: 99fca4b872fa901aac30c3e952ca786d ==> wusir: alex
# 用户登录
if username == "wusir" and my_md5(password) ==
"99fca4b872fa901aac30c3e952ca786d":
     print("成功")
else:
     print("失败")
 所以. 以后存密码就不要存明文了. 要存密文. 安全, 并且. 这里加的盐不能改来改去的.否则, 整套密码就都乱了

二.日志

  1. 导入logging模块.

  2. 简单配置一下logging

  3. 出现异常的时候(except). 向日志里写错误信息.

# filename: 文件名
# format: 数据的格式化输出. 最终在日志文件中的样子
# 时间-名称-级别-模块: 错误信息
# datefmt: 时间的格式
# level: 错误的级别权重, 当错误的级别权重大于等于leval的时候才会写入文件
logging.basicConfig(filename='x1.txt',
                                 format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
                                datefmt='%Y-%m-%d %H:%M:%S',
                                level=0) # 当前配置表示 10以上的分数会被写⼊⽂件
# CRITICAL = 50
# FATAL = CRITICAL
# ERROR = 40
# WARNING = 30
# WARN = WARNING
# INFO = 20
# DEBUG = 10
# NOTSET = 0
logging.critical("我是critical") # 50分. 最贵的
logging.error("我是error") # 40分
logging.warning("我是警告") # 警告 30
logging.info("我是基本信息") # 20
logging.debug("我是调试") # 10
logging.log(2, "我是自定义") # 自定义. 看着给分        

简单做个测试

class JackError(Exception):
     pass
for i in range(10):
 
    try:
         if i % 3 == 0:
             raise FileNotFoundError("⽂件不在啊")
         elif i % 3 == 1:
             raise KeyError("键错了")
         elif i % 3 == 2:
             raise JackError("杰克Exception")
     except FileNotFoundError:
             val = traceback.format_exc()
             logging.error(val)
     except KeyError:
             val = traceback.format_exc()
             logging.error(val)
     except JackError:
             val = traceback.format_exc()
             logging.error(val)
     except Exception:
             val = traceback.format_exc()
             logging.error(val)
最后, 如果你系统中想要把日志文件分开. 比如. 一个大项目, 有两个个系统, 那两个子系统要分开记录日志. 方便调试. 
那怎么办呢? 注意. 用上面的basicConfig是搞不定的. 我们要借助文件助收(FileHandler),
来帮我们完成日志的分开记录

import logging
# 创建一个操作日志的对象logger(依赖FileHandler)
file_handler = logging.FileHandler('l1.log', 'a', encoding='utf-8') file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s"))
logger1
= logging.Logger('s1', level=logging.ERROR)
logger1.addHandler(file_handler)
logger1.error(
'我是A系统')
# 再创建一个操作日志的对象logger(依赖FileHandler)
file_handler2 = logging.FileHandler('l2.log', 'a', encoding='utf-8') file_handler2.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s -%(levelname)s -%(module)s: %(message)s"))
logger2
= logging.Logger('s2', level=logging.ERROR) logger2.addHandler(file_handler2)
logger2.error(
'我是B系统')

 

posted @ 2018-11-17 19:08  Python张梦书  阅读(146)  评论(0编辑  收藏  举报