寫了很多年的python日志都是使用內(nèi)置的logging模塊來完成的,使用時(shí)都需要經(jīng)過繁瑣的配置。有時(shí)候,還可能出現(xiàn)丟失日志的情況,直到loguru的出現(xiàn)。
成都創(chuàng)新互聯(lián)公司是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)絡(luò)營(yíng)銷、企業(yè)網(wǎng)站建設(shè),賣鏈接,廣告投放為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計(jì)到用戶體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
【閱讀全文】
loguru真的是十分的簡(jiǎn)單的,安裝之后直接導(dǎo)入到python代碼塊中即可直接使用。
1、安裝環(huán)境
我們還是按照pip的方式來進(jìn)行安裝,默認(rèn)使用清華大學(xué)的鏡像站。
pip install loguru -i https://pypi.tuna.tsinghua.edu.cn/simple
安裝完成后就可以直接開始使用了。
2、常規(guī)日志打印
在控制臺(tái)打印常規(guī)日志時(shí)不用添加任何的配置直接使用,使用完成后我們可以來驗(yàn)證一下打印效果。
from loguru import logger
# 使用debug級(jí)別打印一行日志
logger.debug('I am debug message.')
下面是我在pycharm上面取下來的日志效果圖。
可以看一下效果還是令人滿意的,這顏色搭配也比較nice,并且日志時(shí)間精確到秒級(jí)。想要看到的日志信息也基本囊括了。
3、寫入日志文件
想寫入日志文件也是比較簡(jiǎn)單不用配置,只需要調(diào)用add函數(shù)添加文件即可。
# 添加日志文件
logger.add('./message-info.log')
# 打印一行debug日志
logger.debug('I am debug message.')
此時(shí),不僅控制臺(tái)會(huì)出現(xiàn)一行日志,并且在message-info.log文件中也寫入了一條dubug日志信息。
若是在寫入文件時(shí)想要指定自己的輸出格式,則可以直接在add函數(shù)直接設(shè)置即可,同時(shí)可以設(shè)置輸出到日志文件中的級(jí)別。
# 按照特定的格式將info級(jí)別的日志寫入到日志文件中
log = logger.add('./info.log',format='{time} | {level} | {message}',level='INFO')
# 這時(shí),多打印一些info級(jí)別的日志
logger.info('I am info message <1>.')
logger.info('I am info message <2>.')
logger.info('I am info message <3>.')
logger.info('I am info message <4>.')
logger.info('I am info message <5>.')
下面是在pycharm控制臺(tái)打印的日志效果
下面是日志文件中的展示效果,跟我們?cè)O(shè)定的日志格式是一樣的。
4、停止寫入日志文件
在上述過程中我們添加自定義日志格式的日志信息到info.log文件中時(shí)特意返回了一個(gè)log變量。
這個(gè)log其實(shí)是返回了一個(gè)日志文件的id,在需要停止向該日志文件中寫入日志時(shí),只需要調(diào)用remove函數(shù)將該文件的日志id作為參數(shù)傳入即可停止向日志文件中寫入日志。
# 停止向日志文件中寫入日志
logger.remove(log)
此時(shí),后面的 日志文件將不會(huì)再寫入日志文件中了。
5、滾動(dòng)記錄日志文件
在實(shí)際情況中,我們并不是只會(huì)有一個(gè)日志文件。當(dāng)一個(gè)日志文件超過一定的大小、或是在一個(gè)特定的時(shí)間周期都可以通過參數(shù)的設(shè)定來生成新的日志文件繼續(xù)記錄日志。
# 超過10M生成一個(gè)新的日志文件
logger.add('info.log',rotation='10 MB')
# 每天凌晨一點(diǎn)生成一個(gè)新的日志文件
logger.add('info.log',rotation='01:00')
并且,為了防止日志文件在長(zhǎng)時(shí)間的記錄之后占用磁盤,一般還可以設(shè)置30天為周期清理日志文件,這樣就又解決了磁盤爆滿的問題。
# 設(shè)置該日志文件保留的時(shí)間為30天
logger.add('info.log',retention='30 days')
通常日志文件如果按照原始的方式存儲(chǔ),那么占用空間還是比較大的。loguru也為我們想到了,就是通過指定文件壓縮的格式之后將日志文件進(jìn)行壓縮。
logger.add('info.log',compression='zip')
6、異常日志捕獲
在實(shí)際coding過程中,特別是生產(chǎn)環(huán)境,若是出現(xiàn)一些異常信息沒有被寫入到日志文件中的情況時(shí)是特別難受的。在生產(chǎn)環(huán)境中,日志是解決問題的唯一辦法。
loguru提供了注解的方式可以將發(fā)生異常的函數(shù)信息直接寫入日志文件中,比如,有這樣一個(gè)函數(shù)在運(yùn)行過程中發(fā)生了異常。
@logger.catch
def func(param):
return 10 / param
func(0)
上面這個(gè)函數(shù)在分母是0的時(shí)候肯定是會(huì)拋出異常的,我們使用注解@logger.catch異常信息就會(huì)被寫入。
同時(shí),在日志文件中也會(huì)記錄詳細(xì)的異常信息。
【往期精彩】
英語沒學(xué)好到底能不能做coder,別再糾結(jié)了先學(xué)起來...
數(shù)據(jù)清洗工具flashtext,效率直接提升了幾十倍數(shù)!
一個(gè)help函數(shù)解決了python的所有文檔信息查看...
python 自定義異常/raise關(guān)鍵字拋出異常
python 本地音樂播放器制作過程(附完整源碼)