logging使用以及各种参数的定义:https://www.cnblogs.com/CJOKER/p/8295272.html
避免logging日志多次打印或者写入:https://www.cnblogs.com/mojiexiaolong/p/6828616.html
一个简单的demo
class Logger():
def __init__(self, path, ):
self.logger = logging.getLogger() # 创建一个logger
# print(self.logger)
self.logger.setLevel(logging.DEBUG) # log等级总开关
# 设置输出path的日志文件
fh = logging.FileHandler(path,mode='a')
# 设置输出文件的等级
# fh.setLevel(logging.DEBUG)
# 定义handler的输出格式
fmt = logging.Formatter('[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S')
fh.setFormatter(fmt)
self.logger.addHandler(fh) # 将logger添加到handler里面
# 设置CMD日志
# sh = logging.StreamHandler()
# sh.setFormatter(fmt)
# sh.setLevel(clevel)
def debug(self, message):
self.logger.debug(message)
# self.logger.removeHandler(fh) # 删除handler
self.logger.handlers.pop()
def info(self, message):
print('======snaba-----====')
self.logger.info(message)
def warn(self, message):
self.logger.warning(message)
def error(self, message):
self.logger.error(message)
def cri(self, message):
self.logger.critical(message)
if __name__ == '__main__':
logyyx = Logger('yyx.log')
# logyyx.debug('一个debug信息')
logyyx.info('一个info信息')
# logyyx.warn('一个warning信息')
# logyyx.error('一个error信息')
# logyyx.cri('一个致命critical信息')