




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- CJ/T 217-2005給水管道復(fù)合式高速進(jìn)排氣閥
- 系統(tǒng)分析師考試真相分析及試題與答案
- 系統(tǒng)分析師考試應(yīng)試技巧試題及答案
- 第七八單元考試題及答案
- 系統(tǒng)分析師考試綜合課程試題及答案
- 選修3-1試題及答案
- 總包公司質(zhì)量管理制度
- 庫房衣服儲(chǔ)存管理制度
- 服裝品質(zhì)考核管理制度
- 滕州疫情防控管理制度
- 山東省煙草專賣局(公司)筆試試題2023
- 配電網(wǎng)居民客戶端低電壓治理方案探討
- 醫(yī)院保潔服務(wù)投標(biāo)方案(技術(shù)方案)
- PLC基礎(chǔ)與實(shí)訓(xùn)三菱FX2N(中職)全套教學(xué)課件
- (高清版)TDT 1042-2013 土地整治工程施工監(jiān)理規(guī)范
- 頭孢他啶在血液腦屏障中的分布及代謝
- 2024年江西贛州城投工程管理有限公司招聘筆試參考題庫含答案解析
- 各大行業(yè)的分析
- 醫(yī)學(xué)實(shí)驗(yàn)技術(shù)
- 社區(qū)托管班方案
- 2023年湖北省武漢市部分地區(qū)中考語文模擬試卷匯編:實(shí)用類文本閱讀
評(píng)論
0/150
提交評(píng)論