日志学习(二)——日志处理封装

配置文件 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的运行结果:

 

posted @ 2019-11-18 21:58  太阳-向日葵  阅读(140)  评论(0编辑  收藏  举报