创建一个log.py文件
'''日志模块'''
import logging
import time
from PO.Common.contants import Open
class MyLog ():
def __init__(self, logging_name=''):
self.logging = logging_name # 日志收集名字,默认为空
def my_log(self, msg, levl):
# leve:用来选择日志输出格式,默认DEBUG
# msg:用来编写输入的内容
# 新建一个日志收集器
my_logger = logging.getLogger (self.logging) # 日志收集器名字
my_logger.setLevel ('DEBUG') # 设定收集的级别
# 指定格式
fm = logging.Formatter ('%(asctime)s - %(name)s - %(levelname)s - %(message)s - [%(filename)s:%(lineno)d ]')
# 新建一个输出渠道并指定到控制台,输出的级别为DEBUG
ch = logging.StreamHandler ()
ch.setLevel ('DEBUG')
ch.setFormatter (fm)
# 创建api_log+时间命名的文本名称
now = time.strftime ('%Y-%m-%d %H-%M') # 获取当前时间,精确到分
filename = Open.log () + 'api_log' + now + '.txt' #Open.log()这里不想要的话,可以改成自己的绝对路径或者相对路径
# 创建存放的路径
file_handler = logging.FileHandler (filename, encoding='utf-8')
file_handler.setLevel ('DEBUG') # 指定输出级别
file_handler.setFormatter (fm)
# 对接
my_logger.addHandler (ch)
my_logger.addHandler (file_handler)
if levl.upper () == 'DEBUG':
my_logger.debug (msg)
elif levl.upper () == 'INFO':
my_logger.info (msg)
elif levl.upper () == 'WARNING':
my_logger.warning (msg)
elif levl.upper () == 'ERROR':
my_logger.error (msg)
elif levl.upper () == 'CRITICAL':
my_logger.critical (msg)
# 移除输出格式和存放路径,避免重复输出
my_logger.removeHandler (ch)
my_logger.removeHandler (file_handler)
# 关闭文件
file_handler.close ()
def debug(self, msg):
self.my_log (msg, 'DEBUG')
def info(self, msg):
self.my_log (msg, 'INFO')
def warning(self, msg):
self.my_log (msg, 'WARNING')
def error(self, msg):
self.my_log (msg, 'ERROR')
def critical(self, msg):
self.my_log (msg, 'CRITICAL')