zoukankan      html  css  js  c++  java
  • 日志学习(二)——日志处理封装

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

  • 相关阅读:
    韦德螺旋: 这真是一个螺旋吗?
    山上你能看到什么动物?
    你能够30秒内一字不差的念完它吗? 注意, 是读“颜色”, 不是让你识字.
    路透斯沃德的不可能的三角形
    换个角度, 青蛙也许就是白马王子
    这是一张很有趣的图片, 通常女性会先看到月亮, 男性会先看到人脸. 如果相反, 表示你体内的异性荷尔蒙偏高哦!
    亲吻的情侣幻觉: 这幅虚幻的亲吻由美国艺术家杰里•唐恩创作.
    PostgreSQL的 initdb 源代码分析之七
    PostgreSQL的initdb 源代码分析之六
    PostgreSQL的initdb 源代码分析之五
  • 原文地址:https://www.cnblogs.com/taiyangfeng/p/11885758.html
Copyright © 2011-2022 走看看