首页 > 编程语言 > 详细

python---logging模块使用

时间:2020-03-22 11:36:41      阅读:66      评论:0      收藏:0      [点我收藏+]

前言

        在运行自动化脚本过程中,我们常常需要监控测试用例的执行过程或者测试用例的结果。之前我们往往会将代码的运行结果通过print输出到控制台显示,控制台显示信息的最大弊端就是不能保存结果。所有当需要将结果显示时我们常常会使用logging日志的方式,相对与print的方式,日志具有以下好处

         1.能将信息分类,可以去设置输出数据的等级,这样可以不用显示大量的调试信息

         2.print只能将信息显示在控制台,而日志可以将信息显示在控制台以及指定的log文件中。(甚至能显示在多个文件中)

         3.能设置输入信息的格式。print只能仅仅的将内容打印出来,而日志我们可以设置时间,内容等等格式

1 logging模块简介

? logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;

 

2 logging模块使用

2.1 基本使用

首先安装logging第三方模块

pip  logging

配置logging基本的设置,然后在控制台输出日志

import logging  
logging.debug(‘debug message‘)  
logging.info(‘info message‘)  
logging.warning(‘warning message‘)  
logging.error(‘error message‘)  
logging.critical(‘critical message‘)  

WARNING:root:warning message
ERROR:root:error message
CRITICAL:root:critical message

? 可见,默认情况下python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志, 这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET),

默认的日志格式为:      日志级别:Logger名称:用户输出消息

 

2.2灵活配置日志级别,日志格式,输出位置

import logging  


logging.basicConfig(level
=logging.DEBUG, format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s, datefmt=%a, %d %b %Y %H:%M:%S, filename=/tmp/test.log, filemode=w) logging.debug(debug message) logging.info(info message) logging.warning(warning message) logging.error(error message) logging.critical(critical message)

 

可见在logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有


- filename:   用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。  
- 
- filemode:   文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。  
- format:     指定handler使用的日志显示格式。  
- 
- datefmt:    指定日期时间格式。  
- level:       设置日志级别 
                  

2.3 handlers的使用

         handler决定了你的日志最终出现的位置, 你的log信息是直接输出到终端(StreamHandler) 还是 保存到 log文件(FileHandler)

      典型的日志记录的步骤是这样的:

  1. 创建logger
  2. 创建handler(streamhandler与fileHandler)
  3. 定义formatter
  4. 给handler添加formatter
  5. 给logger添加handler
import logging
logger = logging.getLogger()
logger.setLevel(level = logging.INFO)

#建立一个FileHandler handler
= logging.FileHandler("log.txt",encoding=‘utf8‘) handler.setLevel(logging.INFO) formatter = logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(message)s) handler.setFormatter(formatter)
#建立一个streamHandler console
= logging.StreamHandler() console.setLevel(logging.INFO) logger.addHandler(handler) logger.addHandler(console) logger.info("Start print log") logger.debug("Do something") logger.warning("Something maybe fail.") logger.info("Finish")

 

 

附录:日志封装文件

 #封装日志
    def get_log(self):
        # 创建一个logger
        logger = logging.getLogger()
        logger.setLevel(logging.INFO)

        # 设置日志存放路径,日志文件名
        # 获取本地时间,转换为设置的格式
        rq = time.strftime(%Y%m%d%H%M, time.localtime(time.time()))
       # 通日志存放路
        all_log_path = Logs/All_Logs/
        error_log_path =Logs/Error_Logs/# 设置日志文件名
        all_log_name = all_log_path + rq + .log
        error_log_name = error_log_path + rq + .log

        # 创建handler
        # 创建一个handler写入所有日志
        fh = logging.FileHandler(all_log_name, encoding=utf8)
        fh.setLevel(logging.INFO)
        # 创建一个handler写入错误日志
        eh = logging.FileHandler(error_log_name, encoding="utf8")
        eh.setLevel(logging.ERROR)
        # 创建一个handler输出到控制台
        ch = logging.StreamHandler()
        ch.setLevel(logging.INFO)

        # 定义日志输出格式
        # 以时间-日志器名称-日志级别-日志内容的形式展示
        all_log_formatter = logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(message)s)
        # 以时间-日志器名称-日志级别-文件名-函数行号-错误内容
        error_log_formatter = logging.Formatter(
            %(asctime)s - %(name)s - %(levelname)s - %(module)s  - %(lineno)s - %(message)s)
        # 将定义好的输出形式添加到handler
        fh.setFormatter(all_log_formatter)
        ch.setFormatter(all_log_formatter)
        eh.setFormatter(error_log_formatter)

        # 给logger添加handler
        logger.addHandler(fh)
        logger.addHandler(eh)
        logger.addHandler(ch)
        return logger

 

python---logging模块使用

原文:https://www.cnblogs.com/hn-daxiong/p/12543843.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!