婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Python接口自動(dòng)化淺析logging日志原理及模塊操作流程

Python接口自動(dòng)化淺析logging日志原理及模塊操作流程

熱門(mén)標(biāo)簽:地圖標(biāo)注審核表 百度地圖標(biāo)注沒(méi)有了 ai電銷(xiāo)機(jī)器人源碼 湛江智能外呼系統(tǒng)廠家 宿遷星美防封電銷(xiāo)卡 ai電話(huà)機(jī)器人哪里好 長(zhǎng)沙高頻外呼系統(tǒng)原理是什么 西藏房產(chǎn)智能外呼系統(tǒng)要多少錢(qián) 外呼并發(fā)線(xiàn)路

在上一篇Python接口自動(dòng)化測(cè)試系列文章:Python接口自動(dòng)化淺析pymysql數(shù)據(jù)庫(kù)操作流程,主要介紹pymysql安裝、操作流程、語(yǔ)法基礎(chǔ)及封裝操作數(shù)據(jù)庫(kù)類(lèi)。

以下主要介紹日志相關(guān)概念及l(fā)ogging日志模塊的操作流程。

一、日志介紹

01 為什么需要日志?

代碼需要經(jīng)歷開(kāi)發(fā)、調(diào)試、審查、測(cè)試或者上線(xiàn)等不同階段,在開(kāi)發(fā)時(shí)想要打印的信息類(lèi)型可能和上線(xiàn)后想看到的信息類(lèi)型完全不同。也就是說(shuō),在“測(cè)試”時(shí),可能只想看警告和錯(cuò)誤信息,然而在“調(diào)試”時(shí),可能還想看到跟調(diào)試相關(guān)的信息。 如果你想打印出使用的模塊以及代碼運(yùn)行的時(shí)間,那么代碼很容易變得混亂。使用logging日志模塊,這些問(wèn)題就能很容易地解決。

02 什么是日志?

日志就是用于記錄系統(tǒng)運(yùn)行時(shí)的信息,對(duì)一個(gè)事件的記錄,也稱(chēng)為L(zhǎng)og。

03 日志的用途是什么?

日志的基本用途如下:

  • 記錄程序運(yùn)行過(guò)程中的錯(cuò)誤,方便跟蹤定位問(wèn)題,減少調(diào)試和維護(hù)成本;
  • 通過(guò)日志能還原整個(gè)程序的執(zhí)行過(guò)程,能了解程序的整體狀態(tài);
  • 對(duì)用戶(hù)行為分析和數(shù)據(jù)統(tǒng)計(jì),知曉信息來(lái)自于哪個(gè)模塊;
  • 在設(shè)計(jì)測(cè)試框架的時(shí)候,也可以通過(guò)設(shè)計(jì)日志來(lái)記錄框架的整個(gè)測(cè)試流程;

04 日志的級(jí)別分為哪些?

常見(jiàn)日志等級(jí),如下:

DEBUG:調(diào)試級(jí)別(Value=10),打印非常詳細(xì)的日志信息,通常僅在Debug時(shí)使用,如算法中每個(gè)循環(huán)的中間狀態(tài);

INFO:信息級(jí)別(Value=20),打印一般的日志信息,突出強(qiáng)調(diào)程序的運(yùn)行過(guò)程 ,主要用于處理請(qǐng)求或者狀態(tài)變化等日常事務(wù);

ERROR:錯(cuò)誤級(jí)別(Value=40),打印錯(cuò)誤異常信息,該級(jí)別的錯(cuò)誤可能會(huì)導(dǎo)致系統(tǒng)的一些功能無(wú)法正常使用,如IO操作失敗或者連接問(wèn)題;

CRITICAL:嚴(yán)重錯(cuò)誤(Value=50),一個(gè)嚴(yán)重的錯(cuò)誤,導(dǎo)致系統(tǒng)可能無(wú)法繼續(xù)運(yùn)行,如內(nèi)存耗盡、磁盤(pán)空間為空,一般很少使用;

05 日志功能的實(shí)現(xiàn)

幾乎所有開(kāi)發(fā)語(yǔ)言都會(huì)內(nèi)置日志相關(guān)功能,或者會(huì)有比較優(yōu)秀的第三方庫(kù)來(lái)提供日志操作功能,比如:log4j,log4php等。它們功能強(qiáng)大、使用簡(jiǎn)單。

Python自身也提供了一個(gè)用于記錄日志的標(biāo)準(zhǔn)庫(kù)模塊——logging。

二、Logging模塊

01 logging模塊介紹

logging模塊是Python內(nèi)置的標(biāo)準(zhǔn)模塊,主要用于輸出運(yùn)行日志,可以設(shè)置輸出日志的等級(jí)、日志保存路徑、日志文件回滾等。

02 logging模塊優(yōu)勢(shì)

相比print,具備如下優(yōu)點(diǎn):

  • 可以在 logging 模塊中設(shè)置日志等級(jí),在不同的relase版本(如開(kāi)發(fā)環(huán)境、生產(chǎn)環(huán)境)上通過(guò)設(shè)置不同的輸出等級(jí)來(lái)記錄對(duì)應(yīng)的日志,只輸出重要信息,而不必顯示大量的調(diào)試信息;
  • print 的輸出信息都會(huì)輸出到標(biāo)準(zhǔn)輸出流中,嚴(yán)重影響開(kāi)發(fā)者從標(biāo)準(zhǔn)輸出中查看其它數(shù)據(jù),而 logging 模塊更加靈活,可以設(shè)置輸出到任意位置,如寫(xiě)入文件、寫(xiě)入遠(yuǎn)程服務(wù)器等;
  • logging 模塊具有靈活的配置和格式化功能,如配置輸出當(dāng)前模塊信息、運(yùn)行時(shí)間等,由開(kāi)發(fā)者決定將信息輸出到什么地方,以及怎么輸出,相比 print 的字符串格式化更加方便易用。

03 logging日志框架的組成

Logger:日志,暴露函數(shù)給應(yīng)用程序,基于日志記錄器和過(guò)濾器級(jí)別決定哪些日志有效。

LogRecord :日志記錄器,將日志傳到相應(yīng)的處理器處理。

Handler :處理器, 將(日志記錄器產(chǎn)生的)日志記錄發(fā)送至合適的目的地。

Filter :過(guò)濾器, 提供了更好的粒度控制,它可以決定輸出哪些日志記錄。

Formatter:格式化器, 指明了最終輸出中日志記錄的布局。

04 logging函數(shù)中的具體參數(shù)

filename:指定的文件名創(chuàng)建FiledHandler,這樣日志會(huì)被存儲(chǔ)在指定的文件中;

filemode:文件打開(kāi)方式,在指定了filename時(shí)使用這個(gè)參數(shù),默認(rèn)值為“w”還可指定為“a”;

format:指定handler使用的日志顯示格式;

datefmt:指定日期時(shí)間格式

level:設(shè)置rootlogger的日志級(jí)別;

stream:用指定的stream創(chuàng)建StreamHandler;

05 簡(jiǎn)單的日志小例子

我們?cè)囍謩e輸出一條不同日志級(jí)別的日志記錄:

import logging
logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")

輸出結(jié)果為:

WARNING:root:This is a warning log.
ERROR:root:This is a error log.
CRITICAL:root:This is a critical log.

為什么debug、info級(jí)別日志沒(méi)輸出呢?logging模塊提供的默認(rèn)的日志級(jí)別是WARNING,所以只輸出了WARNING及以上的日志級(jí)別。

輸出內(nèi)容格式說(shuō)明:日志級(jí)別:日志器名稱(chēng):日志內(nèi)容, 如果未自定義日志器名稱(chēng),默認(rèn)是root。

以下是源碼:

def getLogger(name=None):
    """
    Return a logger with the specified name, creating it if necessary.
    If no name is specified, return the root logger.
    """
    if name:
        return Logger.manager.getLogger(name)
    else:
        return root

06 自定義logger日志

設(shè)置日志收集器及級(jí)別:

# 定義一個(gè)日志收集器
logger = logging.getLogger('ITester')
# 設(shè)置收集器的級(jí)別,不設(shè)定的話(huà),默認(rèn)收集warning及以上級(jí)別的日志
logger.setLevel('DEBUG')

設(shè)置日志格式:

fmt =logging.Formatter('%(filename)s-%(lineno)d-%(asctime)s-%(levelname)s-%(message)s')

常見(jiàn)的日志輸出格式:

設(shè)置日志處理器-輸出到文件:

# 輸出到文件
file_handler = logging.FileHandler('../log/mylog.txt')
# 設(shè)置日志處理器級(jí)別
file_handler.setLevel("DEBUG")
# 處理器按指定格式輸出日志
file_handler.setFormatter(fmt)

在項(xiàng)目下新建一個(gè)文件夾log,在文件夾下新建文件mylog.txt用于存放日志。

設(shè)置日志處理器-輸出到控制臺(tái):

# 輸出到控制臺(tái)
ch = logging.StreamHandler()
# 設(shè)置日志處理器級(jí)別
ch.setLevel("DEBUG")
# 處理器按指定格式輸出日志
ch.setFormatter(fmt)

收集器和處理器對(duì)接,指定輸出渠道:

# 日志輸出到文件
logger.addHandler(file_handler)
# 日志輸出到控制臺(tái)
logger.addHandler(ch)

logger日志大致流程圖,如下:

我們將以上獨(dú)立的介紹糅合到一起,測(cè)試功能是否正常。在common目錄下,新建文件logger_handler.py。

import logging
 
# 定義一個(gè)日志收集器
logger = logging.getLogger('ITester')
 
# 設(shè)置收集器的級(jí)別,不設(shè)定的話(huà),默認(rèn)收集warning及以上級(jí)別的日志
logger.setLevel('DEBUG')
 
# 設(shè)置日志格式
fmt =logging.Formatter('%(filename)s-%(lineno)d-%(asctime)s-%(levelname)s-%(message)s')
 
# 設(shè)置日志處理器-輸出到文件
file_handler = logging.FileHandler('../log/mylog.txt')
 
# 設(shè)置日志處理器級(jí)別
file_handler.setLevel("DEBUG")
 
# 處理器按指定格式輸出日志
file_handler.setFormatter(fmt)
 
# 輸出到控制臺(tái)
ch = logging.StreamHandler()
# 設(shè)置日志處理器級(jí)別
ch.setLevel("DEBUG")
# 處理器按指定格式輸出日志
ch.setFormatter(fmt)
 
# 收集器和處理器對(duì)接,指定輸出渠道
# 日志輸出到文件
logger.addHandler(file_handler)
# 日志輸出到控制臺(tái)
logger.addHandler(ch)
 
if __name__ == '__main__':
    logger.debug('自定義的debug日志')
    logger.info('自定義的info日志')
    logger.warning('自定義的warning日志')
    logger.error('自定義的error日志')
    logger.critical('自定義的critical日志')

控制臺(tái)輸出效果:

文件輸出效果:

以上就是Python接口自動(dòng)化淺析logging日志原理及模塊操作流程的詳細(xì)內(nèi)容,更多關(guān)于Python接口自動(dòng)化logging日志的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • Python函數(shù)式編程中itertools模塊詳解
  • Python編程functools模塊創(chuàng)建修改的高階函數(shù)解析
  • Python編程itertools模塊處理可迭代集合相關(guān)函數(shù)
  • Python中re模塊常用方法總結(jié)分析
  • 解析Python擴(kuò)展模塊的加速方案
  • python中的zip模塊
  • 詳解Python模塊化--模塊(Modules)和包(Packages)
  • Python接口自動(dòng)化之淺析requests模塊post請(qǐng)求
  • Python接口自動(dòng)化之淺析requests模塊get請(qǐng)求
  • 一篇文章帶你了解python標(biāo)準(zhǔn)庫(kù)--time模塊
  • freeswitch開(kāi)源通信 python模塊介紹

標(biāo)簽:普洱 漯河 寧夏 盤(pán)錦 大同 南平 林芝 海南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python接口自動(dòng)化淺析logging日志原理及模塊操作流程》,本文關(guān)鍵詞  Python,接口,自動(dòng)化,淺析,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python接口自動(dòng)化淺析logging日志原理及模塊操作流程》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Python接口自動(dòng)化淺析logging日志原理及模塊操作流程的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 伊宁市| 荆门市| 霍山县| 永吉县| 华池县| 怀集县| 绍兴市| 蒙山县| 化隆| 巩义市| 泾阳县| 烟台市| 阳新县| 澄城县| 青田县| 宜都市| 榆树市| 石门县| 同德县| 淮安市| 越西县| 巴青县| 天峻县| 都江堰市| 雷州市| 绥中县| 大埔区| 黄梅县| 凉山| 水城县| 东乌珠穆沁旗| 新晃| 涟源市| 庄河市| 桂阳县| 蕲春县| 本溪| 武威市| 合肥市| 伊川县| 鄯善县|