




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第python+pytest接口自動(dòng)化之日志管理模塊loguru簡(jiǎn)介目錄安裝簡(jiǎn)單示例add()常用參數(shù)說(shuō)明使用python自帶日志管理模塊logging,使用時(shí)可進(jìn)行模塊化配置,詳細(xì)可參考博文Python日志采集(詳細(xì))。
但logging配置起來(lái)比較繁瑣,且在多進(jìn)行多線程等場(chǎng)景下使用時(shí),如果不經(jīng)過(guò)特殊處理,則容易出現(xiàn)日志丟失或記錄錯(cuò)亂的情況。
python中有一個(gè)用起來(lái)非常簡(jiǎn)便的第三方日志管理模塊--loguru,不僅可以避免logging的繁瑣配置,而且可以很簡(jiǎn)單地避免在logging中多進(jìn)程多線程記錄日志時(shí)出現(xiàn)的問(wèn)題,甚至還可以自定義控制臺(tái)輸出的日志顏色。
接下來(lái)我們來(lái)學(xué)習(xí)怎么使用loguru模塊進(jìn)行日志管理。
安裝
第三方模塊,需要先安裝,安裝命令如下:
pipinstallloguru
簡(jiǎn)單示例
簡(jiǎn)單使用示例如下:
fromloguruimportlogger
#日志寫(xiě)入文件則需使用add()方法,"../log/test.log"即日志文件路徑,可自定義。
#寫(xiě)入文件的日志里有中文的話,需要加上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路徑中寫(xiě)入日志,如下:
由以上結(jié)果可以看出:
loguru中直接提供了一個(gè)日志記錄對(duì)象logger,拿來(lái)即用;loguru默認(rèn)的輸出格式為:時(shí)間|級(jí)別|模塊名|行號(hào)|日志信息;不同級(jí)別的日志在控制臺(tái)顯示顏色不一樣。
當(dāng)然,在實(shí)際項(xiàng)目中我們還需要日志管理器有更豐富的配置,loguru中的add()方法便具有強(qiáng)大的配置功能,接下來(lái)介紹add()方法提供的常用配置功能。
add()常用參數(shù)說(shuō)明
loguru模塊源碼中add()方法的參數(shù)如下:
sink(官方文檔簡(jiǎn)單翻譯如下):
可以傳入類file對(duì)象,如sys.stderr或者open(test.log,w)。可以傳入文件路徑str或pathlib,如示例代碼中的寫(xiě)入日志文件路徑。路徑可以使用一些附加參數(shù)對(duì)其進(jìn)行參數(shù)化,如test_{time}.log,{time}即時(shí)間參數(shù),創(chuàng)建文件時(shí)文件名稱中會(huì)加入時(shí)間。可以傳入像lambda這樣的可調(diào)用函數(shù)的簡(jiǎn)單函數(shù),如lambdamsg:print(msg)。這允許完全由用戶偏好和需求定義日志記錄過(guò)程。還可以是使用asyncdef語(yǔ)句定義的異步協(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:過(guò)濾日志。
colorize:終端日志輸出的顏色。
serializer:bool值,輸出日志時(shí)是否先格式化成JSON數(shù)據(jù)格式。
backtrace:bool值,是否進(jìn)行異常跟蹤(即backtrace信息記錄)。
diagnose:bool值,異常跟蹤是否應(yīng)顯示變量值以簡(jiǎn)化調(diào)試。在生產(chǎn)中應(yīng)將其設(shè)置為False,以避免泄漏敏感數(shù)據(jù)。
enqueue:bool值,日志消息輸出之前是否先通過(guò)多進(jìn)程安全隊(duì)列,多進(jìn)程多線程運(yùn)行寫(xiě)入日志時(shí)需用到,避免日志記錄丟失或混亂。
catch:bool值,是否自動(dòng)捕獲接收器處理日志消息時(shí)發(fā)生的錯(cuò)誤。如果為T(mén)rue,則在sys上顯示異常消息。
繼續(xù)看loguru模塊源碼,如下:
即我們需要將日志寫(xiě)入指定的文件時(shí),可以使用截圖中新增的參數(shù)。常用的參數(shù)說(shuō)明如下:
rotation:指定日志文件記錄條件,日志輸出太多需要隔一段時(shí)間寫(xiě)入新文件時(shí)適用。
#rotation指定日志文件最大為500MB,超過(guò)則新建文件記錄日志
logger.add("../log/test.log",rotation="500MB")
#指定每天12:00新建日志記錄文件:rotation="12:00"
#指定每隔10天新建日志記錄文件:rotation="10days"
#指定每隔一個(gè)星期新建日志記錄文件:rotation="1week"
#指定每隔兩個(gè)月新建日志記錄文件:rotation="2months"
retention:指定日志保留時(shí)長(zhǎng),會(huì)清除超過(guò)指定時(shí)長(zhǎng)的數(shù)據(jù)。
#rotation指定日志保留時(shí)長(zhǎng),如"1week","3days","2months"
logger.add("../log/test.log",retention="10days")
compression:配置文件壓縮格式。
#rotation指定日志保留時(shí)長(zhǎng),如"gz","bz2","xz","lzma","tar","tar.gz","tar.bz2","tar.xz","zip"
logger.add("../log/test.log",compression="zip")
encoding:指定寫(xiě)入文件時(shí)的編碼格式,這在示例代碼中已說(shuō)明。
使用
接下來(lái),我們使用常用的參數(shù)來(lái)組合定義日志記錄方式。
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ù)說(shuō)明:
sink=../log/test_{time}.log,即指定日志文件路徑,且加入了{(lán)time},創(chuàng)建.log文件時(shí)名稱會(huì)加上時(shí)間。level=INFO,寫(xiě)入文件時(shí)只會(huì)寫(xiě)入INFO及以上級(jí)別的日志(需要大寫(xiě)),即INFO、WARNING、CRITICAL。encoding=utf-8,日志寫(xiě)入文件時(shí)指定編碼格式為utf-8,否則有中文的話會(huì)顯示亂碼。enqueue=True,支持多線程多進(jìn)程執(zhí)行時(shí)按照隊(duì)列寫(xiě)入。rotation=500MB,日志文件最大為500MB,超過(guò)則新建。retention=1week,日志
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司演講活動(dòng)策劃方案
- 公司節(jié)慶公關(guān)策劃方案
- 公司新員工軍訓(xùn)活動(dòng)方案
- 公司愛(ài)心藥箱活動(dòng)方案
- 公司聚餐迎雙節(jié)活動(dòng)方案
- 2025年中小學(xué)體育教育相關(guān)知識(shí)考試試卷及答案
- 2025年運(yùn)動(dòng)醫(yī)學(xué)與運(yùn)動(dòng)康復(fù)知識(shí)考試試題及答案
- 2025年心理健康教育研究者招聘考試試題及答案
- 慢性病管理體系創(chuàng)新-洞察及研究
- 社區(qū)品牌歸屬感塑造-洞察及研究
- 2024年山西焦煤集團(tuán)招聘考試真題
- 對(duì)公賬戶提額合同協(xié)議
- 鍍鋁技能考試試題及答案
- 塑鋼門(mén)窗生產(chǎn)制作工藝定稿
- 車(chē)間工藝報(bào)警管理制度
- 中建二測(cè)2025題庫(kù)
- 制造業(yè)生產(chǎn)線質(zhì)量管理措施
- 東方經(jīng)(已經(jīng)排好版)
- DB14-T 3225-2025 煤矸石生態(tài)回填環(huán)境保護(hù)技術(shù)規(guī)范
- 福建省廈門(mén)市2022-2023學(xué)年高二下學(xué)期質(zhì)量檢測(cè)生物試題(解析版)
- 2025年燃?xì)廨啓C(jī)值班員職業(yè)技能知識(shí)考試題庫(kù)
評(píng)論
0/150
提交評(píng)論