python+pytest接口自動(dòng)化之日志管理模塊loguru簡介_第1頁
python+pytest接口自動(dòng)化之日志管理模塊loguru簡介_第2頁
python+pytest接口自動(dòng)化之日志管理模塊loguru簡介_第3頁
python+pytest接口自動(dòng)化之日志管理模塊loguru簡介_第4頁
python+pytest接口自動(dòng)化之日志管理模塊loguru簡介_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第python+pytest接口自動(dòng)化之日志管理模塊loguru簡介目錄安裝簡單示例add()常用參數(shù)說明使用python自帶日志管理模塊logging,使用時(shí)可進(jìn)行模塊化配置,詳細(xì)可參考博文Python日志采集(詳細(xì))。

但logging配置起來比較繁瑣,且在多進(jìn)行多線程等場景下使用時(shí),如果不經(jīng)過特殊處理,則容易出現(xiàn)日志丟失或記錄錯(cuò)亂的情況。

python中有一個(gè)用起來非常簡便的第三方日志管理模塊--loguru,不僅可以避免logging的繁瑣配置,而且可以很簡單地避免在logging中多進(jìn)程多線程記錄日志時(shí)出現(xiàn)的問題,甚至還可以自定義控制臺(tái)輸出的日志顏色。

接下來我們來學(xué)習(xí)怎么使用loguru模塊進(jìn)行日志管理。

安裝

第三方模塊,需要先安裝,安裝命令如下:

pipinstallloguru

簡單示例

簡單使用示例如下:

fromloguruimportlogger

#日志寫入文件則需使用add()方法,"../log/test.log"即日志文件路徑,可自定義。

#寫入文件的日志里有中文的話,需要加上encoding="utf-8",否則會(huì)顯示亂碼。

logger.add("../log/test.log",encoding="utf-8",rotation="500MB",

enqueue=True,retention="7days")

#打印不同類型的日志

logger.debug("這是一段debug級(jí)別日志")

("這是一段info級(jí)別日志")

logger.warning("這是一段warning級(jí)別日志")

logger.critical("這是一段critical級(jí)別日志")

上面的示例代碼運(yùn)行之后,會(huì)在控制臺(tái)打印如下日志:

同時(shí)也會(huì)在../log/test.log路徑中寫入日志,如下:

由以上結(jié)果可以看出:

loguru中直接提供了一個(gè)日志記錄對(duì)象logger,拿來即用;loguru默認(rèn)的輸出格式為:時(shí)間|級(jí)別|模塊名|行號(hào)|日志信息;不同級(jí)別的日志在控制臺(tái)顯示顏色不一樣。

當(dāng)然,在實(shí)際項(xiàng)目中我們還需要日志管理器有更豐富的配置,loguru中的add()方法便具有強(qiáng)大的配置功能,接下來介紹add()方法提供的常用配置功能。

add()常用參數(shù)說明

loguru模塊源碼中add()方法的參數(shù)如下:

sink(官方文檔簡單翻譯如下):

可以傳入類file對(duì)象,如sys.stderr或者open(test.log,w)。可以傳入文件路徑str或pathlib,如示例代碼中的寫入日志文件路徑。路徑可以使用一些附加參數(shù)對(duì)其進(jìn)行參數(shù)化,如test_{time}.log,{time}即時(shí)間參數(shù),創(chuàng)建文件時(shí)文件名稱中會(huì)加入時(shí)間。可以傳入像lambda這樣的可調(diào)用函數(shù)的簡單函數(shù),如lambdamsg:print(msg)。這允許完全由用戶偏好和需求定義日志記錄過程。還可以是使用asyncdef語句定義的異步協(xié)程函數(shù)。該函數(shù)返回的協(xié)程對(duì)象將使用loop.create_task()添加到事件循環(huán)中。在使用complete()結(jié)束循環(huán)之前,應(yīng)該等待這些任務(wù)。也支持傳入logging模塊的Handler,如FileHandler、StreamHandler等,Loguru記錄會(huì)自動(dòng)轉(zhuǎn)換為日志模塊預(yù)期的結(jié)構(gòu)。

level:發(fā)送到sink的日志消息的最低日志級(jí)別,即輸出的最低日志級(jí)別。

format:定義日志的輸出格式。

filter:過濾日志。

colorize:終端日志輸出的顏色。

serializer:bool值,輸出日志時(shí)是否先格式化成JSON數(shù)據(jù)格式。

backtrace:bool值,是否進(jìn)行異常跟蹤(即backtrace信息記錄)。

diagnose:bool值,異常跟蹤是否應(yīng)顯示變量值以簡化調(diào)試。在生產(chǎn)中應(yīng)將其設(shè)置為False,以避免泄漏敏感數(shù)據(jù)。

enqueue:bool值,日志消息輸出之前是否先通過多進(jìn)程安全隊(duì)列,多進(jìn)程多線程運(yùn)行寫入日志時(shí)需用到,避免日志記錄丟失或混亂。

catch:bool值,是否自動(dòng)捕獲接收器處理日志消息時(shí)發(fā)生的錯(cuò)誤。如果為True,則在sys上顯示異常消息。

繼續(xù)看loguru模塊源碼,如下:

即我們需要將日志寫入指定的文件時(shí),可以使用截圖中新增的參數(shù)。常用的參數(shù)說明如下:

rotation:指定日志文件記錄條件,日志輸出太多需要隔一段時(shí)間寫入新文件時(shí)適用。

#rotation指定日志文件最大為500MB,超過則新建文件記錄日志

logger.add("../log/test.log",rotation="500MB")

#指定每天12:00新建日志記錄文件:rotation="12:00"

#指定每隔10天新建日志記錄文件:rotation="10days"

#指定每隔一個(gè)星期新建日志記錄文件:rotation="1week"

#指定每隔兩個(gè)月新建日志記錄文件:rotation="2months"

retention:指定日志保留時(shí)長,會(huì)清除超過指定時(shí)長的數(shù)據(jù)。

#rotation指定日志保留時(shí)長,如"1week","3days","2months"

logger.add("../log/test.log",retention="10days")

compression:配置文件壓縮格式。

#rotation指定日志保留時(shí)長,如"gz","bz2","xz","lzma","tar","tar.gz","tar.bz2","tar.xz","zip"

logger.add("../log/test.log",compression="zip")

encoding:指定寫入文件時(shí)的編碼格式,這在示例代碼中已說明。

使用

接下來,我們使用常用的參數(shù)來組合定義日志記錄方式。

fromloguruimportlogger

importsys

#format建議直接使用默認(rèn)的格式

logger.add("../log/test_{time}.log",level="INFO",encoding="utf-8",enqueue=True,rotation="500MB",retention="1week")

#當(dāng)然也可以自定義format,如下示例

#logger.add("../log/test_{time}.log",

format="{time:YYYY-MM-DDHH:mm:ss}|{level}|{name}|{line}|{message}",encoding="utf-8",enqueue=True,rotation="500MB",retention="1week")

#打印不同類型的日志

logger.debug("這是一段debug級(jí)別日志")

("這是一段info級(jí)別日志")

logger.warning("這是一段warning級(jí)別日志")

logger.critical("這是一段critical級(jí)別日志")

參數(shù)說明:

sink=../log/test_{time}.log,即指定日志文件路徑,且加入了{(lán)time},創(chuàng)建.log文件時(shí)名稱會(huì)加上時(shí)間。level=INFO,寫入文件時(shí)只會(huì)寫入INFO及以上級(jí)別的日志(需要大寫),即INFO、WARNING、CRITICAL。encoding=utf-8,日志寫入文件時(shí)指定編碼格式為utf-8,否則有中文的話會(huì)顯示亂碼。enqueue=True,支持多線程多進(jìn)程執(zhí)行時(shí)按照隊(duì)列寫入。rotation=500MB,日志文件最大為500MB,超過則新建。retention=1week,日志

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論