日志模块之面向对象式封装
将Python自带的Logging模块进行二次封装(以面向对象的方式),通过二次封装后能应用到各种应用场景中。以下代码仅供参考
1 import logging,os,sys,datetime 2 3 class get_logger(): 4 def __init__(self, set_level="debug", 5 name=os.path.split(os.path.splitext(sys.argv[0])[0])[-1], 6 log_name=datetime.datetime.now().strftime("test-" + "%Y%m%d%H%M%S.log"), 7 use_console=True): 8 ''' 9 set_level: 设置日志的打印级别,默认为DEBUG 10 name: 日志中将会打印的name,默认为运行程序的name 11 log_name: 日志文件的名字,默认为当前时间(年-月-日.log) 12 log_path: 日志文件夹的路径,默认为logger.py同级目录中的log文件夹 13 use_console: 是否在控制台打印,默认为True 14 ''' 15 self.logger = logging.getLogger(name) 16 if set_level.lower() == "critical": 17 self.logger.setLevel(logging.CRITICAL) 18 elif set_level.lower() == "error": 19 self.logger.setLevel(logging.ERROR) 20 elif set_level.lower() == "warning": 21 self.logger.setLevel(logging.WARNING) 22 elif set_level.lower() == "info": 23 self.logger.setLevel(logging.INFO) 24 elif set_level.lower() == "debug": 25 self.logger.setLevel(logging.DEBUG) 26 else: 27 self.logger.setLevel(logging.NOTSET) 28 if not os.path.exists('../Logs'): 29 os.makedirs('../Logs') 30 log_file_path = os.path.join('../Logs', log_name) # 调试用 31 # if not os.path.exists('./Logs'): 32 # os.makedirs('./Logs') 33 # log_file_path = os.path.join('./Logs', log_name) # 打包用 34 log_handler = logging.FileHandler(log_file_path, encoding='utf-8',mode='w') 35 log_handler.setFormatter( 36 logging.Formatter("%(asctime)s - %(levelname)s - %(message)s","%Y-%m-%d %H:%M:%S")) 37 self.logger.addHandler(log_handler) 38 if use_console: 39 console_handler = logging.StreamHandler() 40 console_handler.setFormatter( 41 logging.Formatter("%(asctime)s - %(levelname)s - %(message)s","%Y-%m-%d %H:%M:%S")) 42 self.logger.addHandler(console_handler) 43 44 def addHandler(self, hdlr): 45 self.logger.addHandler(hdlr) 46 47 def removeHandler(self, hdlr): 48 self.logger.removeHandler(hdlr) 49 50 def critical(self, msg, *args, **kwargs): 51 self.logger.critical(msg, *args, **kwargs) 52 53 def warning(self, msg, *args, **kwargs): 54 self.logger.warning(msg, *args, **kwargs) 55 56 def error(self, msg, *args, **kwargs): 57 self.logger.error(msg, *args, **kwargs) 58 59 def info(self, msg, *args, **kwargs): 60 self.logger.info(msg, *args, **kwargs) 61 62 def debug(self, msg, *args, **kwargs): 63 self.logger.debug(msg, *args, **kwargs) 64 65 def log(self, level, msg, *args, **kwargs): 66 self.logger.log(level, msg, *args, **kwargs)
END

浙公网安备 33010602011771号