开始实现需求之前先做个log类,可以给其他模块使用,也方便以后修改log类的功能和属性。
使用的是python中的logging包来进行简单的封装,具体代码如下
import logging
import sys
class TefLogger:
def __init__(self, logger_name='TEST_FRAMEWORK'):
self.logger = logging.getLogger(logger_name)
self.logger.propagate = False
self.set_level(logging.DEBUG)
self.formatter = logging.Formatter('%(asctime)s - %(module)s - %(lineno)s - %(levelname)s - %(message)s',
datefmt='%m/%d/%Y %I:%M:%S %p')
def set_level(self, level=logging.DEBUG):
self.logger.setLevel(level)
def add_stream_handler(self, level=logging.INFO):
self.stdout_log_handler = logging.StreamHandler(sys.stdout)
self.stdout_log_handler.setLevel(level)
self.stdout_log_handler.setFormatter(self.formatter)
self.logger.addHandler(self.stdout_log_handler)
return self.stdout_log_handler
def add_file_handler(self, log_file_name, level=logging.INFO):
file_log_handler = logging.FileHandler(log_file_name, 'w', 'utf-8')
file_log_handler.setFormatter(self.formatter)
file_log_handler.setLevel(level)
self.logger.addHandler(file_log_handler)
return file_log_handler
def get_logger(self):
return self.logger
def remove_handler(self, log_handler):
self.logger.removeHandler(log_handler)
#USAGE EXAMPLE
'''
teflog = TefLogger()
teflog.add_stream_handler(logging.DEBUG)
teflog.add_file_handler('test_info.txt', logging.INFO)
teflog.add_file_handler('test_debug.txt', logging.DEBUG)
logger = teflog.get_logger()
logger.info("test_info")
logger.debug("test_debug")
'''
这样的话以后在新建类的__init__中可以实例化logger类来使用