1.md5加密
代码语言:javascript复制import hashlib
md5 = hashlib.md5(bytes('leon', encoding='utf_8')) # leon 转化为bytes类型的盐,可自己设置(动态加盐)
md5.update(b'leon1222') # 需要对 leon1222 加密
print(md5.hexdigest()) # 输出加密结果
2.定制日志
settings.py 配置
代码语言:javascript复制LOG_FMT = "%(levelname)-8s%(asctime)s %(name)s:%(filename)s:%(lineno)d %(message)s"
INFO_LOG_PATH = os.path.join(PROJECT_PATH, "logs", "info.log")
ERROR_LOG_PATH = os.path.join(PROJECT_PATH, "logs", "error.log")
BACK_COUNT = 3
代码实现
代码语言:javascript复制import logging
from logging import handlers
from conf import settings
class LogHandler(object):
# 日志级别关系映射
level_relations = {
'debug': logging.DEBUG,
'info': logging.INFO,
'warning': logging.WARNING,
'error': logging.ERROR,
'crit': logging.CRITICAL
}
def __init__(self, filename, level='info', when='D'):
self.logger = logging.getLogger(filename)
self.log_colors_config = {
'DEBUG': 'cyan',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'red',
'CRITICAL': 'red',
}
# 设置日志格式
format_str = logging.Formatter(settings.LOG_FMT)
# 设置日志级别
self.logger.setLevel(self.level_relations.get(level))
# 往屏幕上输出
sh = logging.StreamHandler()
# 设置屏幕上显示的格式
sh.setFormatter(format_str)
# 往文件里写入#指定间隔时间自动生成文件的处理器
th = handlers.TimedRotatingFileHandler(
filename=filename, when=when, backupCount=settings.BACK_COUNT, encoding='utf-8')
"""
# 实例化TimedRotatingFileHandler
# interval是时间间隔,
# backupCount是备份文件的个数,如果超过这个个数,就会自动删除,
# when是间隔的时间单位,单位有以下几种:
# S 秒
# M 分
# H 小时、
# D 天、
# W 每星期(interval==0时代表星期一)
# midnight 每天凌晨
"""
# 设置文件里写入的格式
th.setFormatter(format_str)
# 把对象加到logger里
self.logger.addHandler(sh)
self.logger.addHandler(th)
INFO = LogHandler(settings.INFO_LOG_PATH, level='info')
ERROR = LogHandler(settings.ERROR_LOG_PATH, level='error')
if __name__ == '__main__':
ERROR.logger.error("测试")