#!/usr/bin/python # -*- coding:utf-8 -*- import logging import time import os class Log(object): ''' 封装后的logging ''' def __init__(self, logger=None, log_cate='search'): ''' 指定保存日志的文件路径,日志级别,以及调用文件 将日志存入到指定的文件中 ''' # 创建一个logger self.logger = logging.getLogger(logger) self.logger.setLevel(logging.DEBUG) # 创建一个handler,用于写入日志文件 self.log_time = time.strftime("%Y_%m_%d") file_dir = os.getcwd() + './log' if not os.path.exists(file_dir): os.mkdir(file_dir) self.log_path = file_dir self.log_name = self.log_path + "/" + log_cate + "." + self.log_time + '.log' # print(self.log_name) fh = logging.FileHandler(self.log_name, 'w', encoding='utf-8') # 这个是python3的 a 追加,w覆盖 fh.setLevel(logging.INFO) # 再创建一个handler,用于输出到控制台 ch = logging.StreamHandler() ch.setLevel(logging.INFO) # 定义handler的输出格式 formatter = logging.Formatter( '[%(asctime)s] %(filename)s->%(funcName)s line:%(lineno)d [%(levelname)s]%(message)s') fh.setFormatter(formatter) ch.setFormatter(formatter) # 给logger添加handler self.logger.addHandler(fh) self.logger.addHandler(ch) # 添加下面一句,在记录日志之后移除句柄 # self.logger.removeHandler(ch) # self.logger.removeHandler(fh) # 关闭打开的文件 fh.close() ch.close() def getlog(self): return self.logger if __name__ == '__main__': mlog = Log().getlog() mlog.info("消息") mlog.debug('This message should appear on the console') mlog.info('So should this') mlog.warning('And this, too')