配置文件 testcase.conf
[log] logger_name = case logger_level = DEBUG logger_failname = case.log console_level = ERROR file_level = INFO # 使用%来转义%,不转义会报错 simple_formatter = %%(asctime)s - [%%(levelname)s]- [%%(message)s] verbose_formatter = %%(asctime)s - [%%(levelname)s] - [%%(message)s] - [%%(module)s- [%%(lineno)d]]
处理日志hand_log.py文件
import logging from python_0724_handle_log.handle_config import do_config class HandleLog: """ 封装日志类 """ def __init__(self): # 1、定义日志收集器 self.case_logger = logging.getLogger(do_config.get_value("log","logger_name")) # 会创建一个logger对象 # 2、指定日志收集器的日志等级 # 只能收集当前等级和当前等级以上级别的日志 # 方法一 self.case_logger.setLevel(do_config.get_value("log","logger_level")) # 即能收集DEBUG和DEBUG以上级别的日志 # 方法二 # self.case_logger.setLevel("DEBUG") # 3、定义日志输出渠道 # 输出到控制台 console_handle = logging.StreamHandler() # 返回一个handler对象 # 输出到文件 file_handle = logging.FileHandler(do_config.get_value("log","logger_failname"), encoding="utf-8") # 4、指定日志输出渠道的日志等级 # 控制台 console_handle.setLevel(do_config.get_value("log","console_level")) # 文件 file_handle.setLevel(do_config.get_value("log","file_level")) # 5、定义日志显示格式 simple_formatter = logging.Formatter(do_config.get_value("log","simple_formatter")) verbose_formatter = logging.Formatter( do_config.get_value("log","verbose_formatter")) console_handle.setFormatter(simple_formatter) # 控制台显示简单的日志 file_handle.setFormatter(verbose_formatter) # 日志文件中显示详细日志 # 6、对接、将日志收集器与输出渠道对接 self.case_logger.addHandler(console_handle) self.case_logger.addHandler(file_handle) def get_logger(self): """ 获取logger日志器对象 :return: """ return self.case_logger # do_log = HandleLog() # case_logger = do_log.get_logger() do_log = HandleLog().get_logger() if __name__=='__main__': do_log = HandleLog() case_logger = do_log.get_logger() case_logger.debug("这是一个debug级别的日志") # 手动记录日志 case_logger.info("这是一个info级别的日志") case_logger.warning("这是一个warning级别的日志") case_logger.error("这是一个error级别的日志") case_logger.critical("这是一个critical级别的日志")
handle_log的运行结果: