• python内置库logging的使用


    logging为python内置库,提供记录日志功能

    常见的logging用法如下:

    1.指定文件日志输出:

    """
    logging内置库:
    log级别划分:
     -1、notset     0     伪级别,仅做用户定义级别的下限存在
     -2、debug    10      全部日志,一般为调试信息
     -3、info     20      主要功能模块信息 info及其等级以上的全部日志
     -4、warning  30      警告信息
     -5、error    40      错误信息
     -6、critical 50      极其严重的错误信息
    
    设置日志格式logging.Formatter的参数如下: %(name)s 记录器名称 %(levelno)s 消息的数字记录级别 (DEBUG, INFO,WARNING, ERROR, CRITICAL) %(levelname)s 消息文本的记录级别 ("DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL") %(pathname)s 发出记录日志源文件的完整路径名 %(filename)s 路径名的顽文件名部分 %(module)s 模块,文件名的名称部分 %(lineno)d 发出日志调用记录的源行号(即:这条日志信息是运行该代码文件的第多少行而产生的) %(funcName)s 功能名 %(created)f 创建日志记录的时间,格式为:time.time() 的返回值,时间格1583216609.5454457 %(asctime)s 创建日志文本记录的时间,格式如:2020-03-03 15:22:35 %(msecs)d 创建日志记录时间的毫秒部分 %(relativeCreated)d 创建日志记录的时间,以毫秒为单位,相当于加载日志模块的时间,常在应用程序启动时 %(thread)d 线程ID %(threadName)s 线程名 %(process)d 进程ID %(message)s 日志的消息体
    """ import logging #设置日志记录器, 日志集 logger = logging.getLogger('loggingtest') #设置日志集级别 logger.setLevel('DEBUG') #添加日志记录要保存到的文件,不写路径默认保存到和该程序相同的路径下 handler = logging.FileHandler('log.txt') #设置保存文件中的日志级别 handler.setLevel('DEBUG') #设置日志打印格式 formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") #为日志记录文件加入上述设置的日志格式 handler.setFormatter(formatter) #将日志记录文件加入到日志集 logger.addHandler(handler) logger.info('Start print log') logger.debug('Do something') logger.warning('Something maybe fail') logger.info('Finish')
    上述代码运行结果保存在和代码文件相同目录下的log.txt中,具体形成日志信息如下:
    2020-03-03 16:25:27,670 - loggingtest - INFO - Start print log
    2020-03-03 16:25:27,670 - loggingtest - DEBUG - Do something
    2020-03-03 16:25:27,670 - loggingtest - WARNING - Something maybe fail
    2020-03-03 16:25:27,670 - loggingtest - INFO - Finish

    其中调整logger和handler级别都可以对日志进行筛选,上述列子中的日志级别都为debug,则日志将记录高于并等于该级别的信息。比如将logger级别调整为info,则结果如下:
    2020-03-03 16:34:25,410 - loggingtest - INFO - Start print log
    2020-03-03 16:34:25,410 - loggingtest - WARNING - Something maybe fail
    2020-03-03 16:34:25,410 - loggingtest - INFO - Finish
    即logger和handler中级别设置较高的那个做为日志记录信息级别的下限。

    2.控制台和文件日志同时输出:

    同理控制台日志输出只需在上面代码添加控制台输出方法调用即可:

    import logging
    
    #设置日志记录器, 日志集
    logger = logging.getLogger('loggingtest')
    #设置日志集级别
    logger.setLevel('INFO')
    #添加日志记录要保存到的文件,不写路径默认保存到和该程序相同的路径下
    handler = logging.FileHandler('log.txt')
    #设置保存文件中的日志级别
    handler.setLevel('DEBUG')
    
    #控制台日志输出
    console = logging.StreamHandler()
    console.setLevel("INFO")
    
    #设置日志打印格式
    formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
    
    #为日志记录文件加入上述设置的日志格式
    handler.setFormatter(formatter)
    console.setFormatter(formatter)
    
    
    #将日志记录文件加入到日志集
    logger.addHandler(handler)
    #将控制台日志打印加入到日志集
    logger.addHandler(console)
    
    logger.info('Start print log')
    logger.debug('Do something')
    logger.warning('Something maybe fail')
    logger.info('Finish')

    当然,也可单独输出日志信息到控制台。
    以上为logging常用用法,后面会记录logging模块封装后应用在自动化测试中生成测试日志。








                        
    当你试图去用自己的言语去讲清一些事物时,你会明白对此事物的理解是融会贯通还是一知半解
  • 相关阅读:
    遭遇争强好胜
    Redis学习笔记一:数据结构与对象
    Lua模块测试
    SQL JOIN
    Error:(1, 1) java: 非法字符: ‘ufeff’
    Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
    HTTPS为什么又快又安全?
    QA
    linux日志分割、去重、统计
    Maven:dependency scope
  • 原文地址:https://www.cnblogs.com/1211-1010/p/12402462.html
Copyright © 2020-2023  润新知