日志Log

一、 日志由四大部分组成

    1. 日志记录器 logger
       在程序中,使用logger 记录程序执行过程的日志信息
       这些日志信息,可以用于运维监察程序运行状态。

    2. 日志处理器 Handler
       当记录器记录的日志信息后,需要处理器来处理。
       一般使用 StreamHandler 在控制台输出
       还可以使用HTTPHandler 将日志上传到日志服务器中(Flume 分布式日志服务)
       当然使用 FileHandler 将日志信息写入到文件中
       
       常用的处理器:
            流处理器:StreamHandler
            文件处理器:FileHandler
            网络请求处理器:HTTPHandler  上传日志信息到日志服务器(Flask/Flume)
            邮箱处理器:SMTPHandler

    3. 日志的格式化  Formatter
       将记录器记录的日志,按照一定的格式,交给处理器
       格式包含:
           asctime  日志发生的时间
           pathname
           filename
           funcName
           process   进程ID
           thread    线程ID
           message   日志的消息
           levelname 日志等级的名称
           lineno    日志发生的行号
           name      记录器的名称

    4. 日志过滤器 Filter
       过滤记录器记录的信息



二、 日志等级
     在logging 模块中,分6个级别
     - CRITICAL  50  严重错误
     - ERROR     40  错误
     - WARNING   30  警告
     - INFO      20  一般的消息
     - DEBUG     10  调试
     - NOSET     0   默认未设置

三、 应用的步骤
    1) import logging
       import TimeRotatingFileHandler,HTTPHandler,SMTPHandler

    2) 创建或获取日志记录器 默认记录器的名称为root
       logger = logging.getLogger('django.request')

       # 设置日志记录器的等级
       logger.setLevel(logging.INFO)

       root_logger = logging.getLogger()

    3) 创建formatter 格式化对象,并添加到处理器中
                            时间         时间等级
       f = Formatter(fmt='%(asctime)s %(levelname)s: %(message)s',
                     datefmt='')

    4) 创建处理器Handler
       handler = StreamHandler()
       handler.setFormatter(f)  # 设置处理器的格式化

       # 设置处理器的等级
       handler.setLevel(logging.INFO)

    5)将处理器添加到日志记录器对象上
       logger.addHandler(handler)

    6) 在程序某一个功能点上, 通过日志记录器,来记录重要的信息
       logger.info('xxxx')  # 记录的信息等级是INFO
       logger.error('xxxx') # 记录信息的等级是 ERROR
       logger.debug('.....') # 记录信息的等级是DEBUG

猜你喜欢

转载自blog.csdn.net/weixin_44111412/article/details/91968972
今日推荐