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


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

  • 相关阅读:
    使用MSXML2::IXMLDOMDocument2Ptr每次都要CreateInstance和load(xmlfile)吗?
    .Net程序安装打包的一些经验贡献
    感慨SQL2005中的数据挖掘算法
    COM客户端没法激活托管代码生成的COM Server的原因
    预感~=命中注定
    创业经理10大必备素质
    全局缓存管理工具
    XML DOM的结构概念图解哪里是Element,哪里是Attribute,哪里是Text
    用GetVolumeInformation得到的不是硬盘的序列号,不要再抄这样的错误好吗?
    站在生活的背后
  • 原文地址:https://www.cnblogs.com/taiyangfeng/p/11885758.html
Copyright © 2020-2023  润新知