• python之logging日志(二)


    日志封装

    1、封装日志函数(主要)

    1)封装:将代码装在一个盒子里面,盒子的形式有函数、类。即将代码逻辑封装成函数或者类,然后再调用函数和类

    2)日志函数的封装:

    a、def get_logger(name,logger_level,stream_handler_level,fmt_str,file,file_handler_level)返回值为Logger(收集器)

    name:收集器的名称,logger_level:收集器日志等级,stream_handler_level:流处理器等级,fmt_str:日志格式化字符串,file:日志输出文件,在函数里面需要判断是否存在file,存在file的情况下才能获取文件处理器,file_hanler_level

    b、因为需要传入的参数比较多,调用的时候还是很麻烦,所以定义函数的时候参数都给默认值,这样调用的时候即使不传入参数也能用

    def get_logger(name="root",

             logger_level="DEBUG",

                             stream_handler_level="DEBUG",

                             fmt_str="%(asctime)s:%(levelname)s:%(name)s:%(message)s----%(filename)s----%(lineno)d",

           file=None,

             file_handler_level="INFO")

    因为在控制台需要输出debug的日志,需要调试,而文件中无需输出debug的日志,故设置日志等级为info

    c、日志格式必须需要添加:

    1)%(levelname)s:日志等级名称

    2)%(name)s:收集器的名称

    3)%(message)s:日志内容信息

    4)%(asctime)s:日志输出时间, 默认形式为 '2003-07-08 16:49:45,896' (逗号之后的数字为时间的毫秒部分)。

    5)%(filename)s:日志打印的py文件名称( pathname 的文件名部分)。

    6)%(lineno)d:发出日志记录调用所在的源行号。

    2、类封装

    使用继承logging.Logger来封装

    class Logger(logging.Logger):  # 因为继承了logging.Logger,所以当创建Logger的时候自己本身就是收集器了

      def __init__(self,

            name="root",

             logger_level="DEBUG",

                             stream_handler_level="DEBUG",

                             fmt_str="%(asctime)s:%(levelname)s:%(name)s:%(message)s----%(filename)s----%(lineno)d",

           file=None,

             file_handler_level="INFO"):

        super().__init__(name,logger_level)  # 调用父类__init__,相当于logging.getLogger(name)+Logger.setLevel(logger_level) ,

                         # 因为继承了logging.Logger类,它本身就是收集器了,只需要传入name和logger_level进行初始化设置  

        # 设置日志格式

        fmt = logging.Formatter(fmt_str)

        # 获取处理器并设置日志等级以及日志格式,并添加到收集器

        handler = logging.StreamHandler()

        handler.setLevel(stream_handler_level) 

        handler.setFormatter(fmt)

        # 添加处理器到收集器

        self.addHandler(handler )

        # 获取文件处理器并设置日志等级以及日志格式

        if file:

          file_handler = logging.FileHandler(file, encoding="utf-8")

          file_handler.setLevel(file_handler_level)

          file_handler.setFormatter(fmt)

          self.addHandler(file_handler)

     

        

        

        

    本文来自博客园,作者:%女王%,转载请注明原文链接:https://www.cnblogs.com/lynne-wu/p/14234297.html

  • 相关阅读:
    Safari-IoS调试
    前端加密技术
    gulp入门
    xss攻击
    xml 解析
    python 基本语法
    python初识
    字节
    神奇的算式
    linux-虚拟机安装
  • 原文地址:https://www.cnblogs.com/lynne-wu/p/14234297.html
Copyright © 2020-2023  润新知