import os,sys,logging from logging import handlers class Loggers(object): # 日志级别关系映射 level_relations = { 'debug': logging.DEBUG, 'info': logging.INFO, 'warning': logging.WARNING, 'error': logging.ERROR, 'critical': logging.CRITICAL } def __init__(self,filename='test.log',when='D',backCount=30,level='info', log_dir='log', fmt='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s'): if not os.path.exists(log_dir): os.makedirs(log_dir) self.logger = logging.getLogger(filename) self.log_name = os.path.join(log_dir,filename) format_str = logging.Formatter(fmt) # 设置日志格式 self.logger.setLevel(self.level_relations.get(level)) # 设置日志级别 file_handler = handlers.TimedRotatingFileHandler(filename=self.log_name,when=when,backupCount=backCount,encoding='utf-8') stream_handler = logging.StreamHandler() # 往屏幕上输出 stream_handler.setFormatter(format_str) # 往屏幕上输出 file_handler.setFormatter(format_str) self.logger.addHandler(file_handler) self.logger.addHandler(stream_handler) # 往屏幕上输出