• (十四)日志


    日志收集

    1.日志作用

    不管是在项目开发还是测试过程中,项目运行一旦出现了问题,日志信息就非常重要了,日志是定位问题的重要手段,是发现bug的线索

    2.日志级别

    脚本运行会有很多情况,比如调试信息,报错异常信息等,日志要根据这些不同情况继续分级管理,不然对于排查问题的筛选会有比较大的干扰,日志一般定位的级别如下:

    级别 何时使用
    DEBUG 调试信息,也是最详细的日志信息
    INFO 证明事情按预期工作
    WARNING 表明发生了一些意外,或者不久的将来会发生问题(如:磁盘满了),软件还是在正常工作
    ERROR 由于更严重的问题,软件已不能执行一些功能了
    CRITICAL 严重错误,表明软件已不能继续运行了

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

     

     

    首先我们日志要按照info,debug,error等级别来进行区分的,当然这个级别可以自己去设置,在一般情况下我们普通的输出我们直接用info类型,调试的时候就用debug类型,如果预计有错误时,那么我们就用erro类型的日志,一般情况1下使用info级别最合适。

    log的优先级如下:

    3.日志格式

    日志的格式是为了提高日志的可读性,比如:时间+模块+行数+日志具体信息的内容格式,如果日志信息杂乱无章的全部输出来,这样也不利于定位问题。

    4.日志位置

    一个项目中会有很多日志采集点,而日志采集点必须结合业务属性来设置,比如在登录代码执行前可以插入“准备登录”,日志信息如果登录完成1之后,再设置登录的提示日志就会给人造成误解,无法判断到底是登录之前的问题还是登录之后的问题,因此日志采集点的位置很重要.

    5.logging模块

    python的logging模块提供了通用日志系统,这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SMTP,SOKET等,甚至可以以自己的方式实现日志

     

     6.logging的构成

    logging模块包括logger,Handler,Filter,Formatter

    logger记录器:用于设置日志采集

    Handler处理器:将日志信息发送至合适的路径

    Filter过滤器:提供了更好的粒度控制,它可以决定输出哪些日志记录

    Formatter格式化器:指明了最终输出的日志格式

    6.1 logger记录器

    Logger是一个树形层级结构,在使用接口debug,info,warm,error,critical;在使用之前必须创建Logger实例,即创建一个记录器,如果没有显式的进行创建,则默认创建一个root Logger,并应用默认的日志级别(WARN),Handler和Fomstter.

    方法:

    basicConfig(**kwargs)为日志记录系统做基本配置

    部分参数:

    filename:指定日志文件名称

    filemode:指定打开文件的模式,如果指定了filename

    format:为处理程序使用指定的格式字符串

    datefmt:使用指定的日期/时间格式,样式如果指定了格式字符串,则使用它来指定格式字符串的类型

    level:将根记录器级别设置为指定级别

    代码实现:

     

     

     控制台结果:

     

     

     ps:Python文件名称最好不要和关键字一样

    6.2.Handler处理器

    Handler处理器,将日志记录发送至合适的路径,Handler处理器类型有很多种,常用的有3个:

    1)StreamHandler

    将日志记录输出发送到诸如sys.stdout,sys.stderr或类似文件流的对象,上面例子就是输出到控制台

    2)FileHandler

    将日志记录输出发送到磁盘文件,它继承了StreamHandler的输出功能

    logging.basicConfig(filename="runlog.log",level=logging.DEBUG)

    3)NullHandler

    不做任何格式化或输出,它本质上是一个开发人员使用的”无操作“处理程序。

    6.3.Filter过滤器

    Handlers和loggers可以使用Filters来完成比级别更复杂的过滤

    6.4 Formatter

    使用Formatter对象设置日志信息最后的规则,结构和内容,默认的时间格式为:%Y-%m-%d%H%m%S

    常用格式如下:

     

    格式描述
    %(levelno)s 打印日志级别的数值
    %(levelname)s 打印日志级别名称
    %(pathname)s 打印当前执行程序的路径
    %(filename)s 打印当前执行程序名称
    %(funcName)s 打印日志的当前函数
    %(lineno)d 打印日志的当前行号
    %(asctime)s 打印日志的时间
    %(thread)d 打印线程id
    %(threadName)s 打印线程名称
    %(process)d 打印进程ID
    %(message)s 打印日志信息

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

     

     

     

     

     

     

     

     

     

     

    使用方法如下:

    logging.basicConfig(filename='runlog.log',level=logging.DEBUG,format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')

     

  • 相关阅读:
    防止浏览器记住用户名及密码的简单实用方法
    vb.net如何发送含双引号的字符串。转义双引号
    武神坛任务超详细解说。刷战神任务
    Asp.Net文件和文件夹操作大全
    LINQ 中的 select
    经典.net常用面试题目基础
    福建厦门联通DNS
    jQuery 遍历函数 each
    为什么 内燃机 要 先压缩空气 才能有效的将 热能 转化为 动能 ?
    【哈哈】 这个题能让官科吵几千楼我也是没想到的
  • 原文地址:https://www.cnblogs.com/xiongxiaoyan/p/11732133.html
Copyright © 2020-2023  润新知