python中的logging日志模塊
今天和大家分享一下Python中的logging日志模塊,日志是程序不可或缺的一部分。它可以記錄程序的運(yùn)行情況,幫助我們更便捷地發(fā)現(xiàn)問題,恰好Python中的logging日志模塊給我們提供了這個機(jī)會,希望看完這篇分享之后能夠?qū)φ趯W(xué)習(xí)Python的同學(xué)有所幫助!
logging給我們提供了五種函數(shù)用來輸出日志:debug()、info()、waring()、error()和critical()
這五種函數(shù)的使用場景:
DEBUG:詳細(xì)信息,典型地調(diào)試問題時會感興趣。
INFO: 證明事情按預(yù)期工作。
WARNING: 表明發(fā)生了一些意外,或者不久的將來會發(fā)生問題(如‘磁盤滿了’)。軟件還是在正常工作。
ERROR:由于更嚴(yán)重的問題,軟件已不能執(zhí)行一些功能了。
CRITICAL:嚴(yán)重錯誤,表明軟件已不能繼續(xù)運(yùn)行了。
這篇文章只介紹logging的簡單使用,下一篇文章將會介紹設(shè)置復(fù)雜的配置,以便滿足更多的需求
簡單配置
簡單的配置適用于小的腳本文件中或者是小的項(xiàng)目中
首先我們利用了logging.basicConfig()函數(shù)設(shè)置logging。下面介紹其中的屬性
level,設(shè)置需要捕獲的日志級別,如果日志消息的級別高于設(shè)定的值則捕獲該日志消息把它打印到屏幕上或者存儲到文件中,如果低于該級別則不捕獲
format,用于設(shè)置日志消息的格式
Attribute Format Description
asctime %(asctime)s 將日志的時間構(gòu)造成可讀的形式,默認(rèn)情況下是‘2016-02-08 12:00:00,123’精確到毫秒
filename %(filename)s 包含path的文件名
funcName %(funcName)s 由哪個function發(fā)出的log
levelname %(levelname)s 日志的最終等級(被filter修改后的)
message %(message)s 日志信息
lineno %(lineno)d 當(dāng)前日志的行號
pathname %(pathname)s 完整路徑
process %(process)s 當(dāng)前進(jìn)程
thread %(thread)s 當(dāng)前線程
filemode:設(shè)置記錄日志的方式,'w'將會重新改寫整個日志文件,'a'將會在原來的文件中追加內(nèi)容
3. datefmt:可以設(shè)置日志消息中時間的顯示格式
4. filename:設(shè)置將日志記錄到那個文件當(dāng)中,如果不設(shè)置這個值,日志將會打印到屏幕上
5. filemode:設(shè)置將日志寫入文件的方式,'a'是追加到文件中,'w'是重寫文件
注意:上面配置的屬性都是可選的,他們都是有默認(rèn)值的
分析代碼
在代碼中我們將日志以追加的方式寫到同目錄中的my.log中,并設(shè)置了消息的格式和處理消息的級別是INFO,所以只有
INFO和比INFO級別更高的日志消息我們才會記錄捕獲
我們設(shè)置了兩個函數(shù)test1、test2,在test1中
test1
我們可以在日志消息中引用變量,我們看看運(yùn)行的效果
my.log
可以看到只在my.log文件中寫入了info和warning消息,而程序中的debug消息并沒有寫入,這是因?yàn)閐ebug的級別小于info。
今天的分享到這里就結(jié)束了,希望大家能夠持續(xù)關(guān)注馬哥教育官網(wǎng),每天都會有優(yōu)質(zhì)內(nèi)容與大家分享歐!
聲明:文章來源于網(wǎng)絡(luò),侵刪!