日志模块之面向对象式封装

将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)
View Code

END

  

posted @ 2019-04-19 16:38  无为而道  阅读(345)  评论(0)    收藏  举报