python - 日志記錄模塊(logging)的二次封裝

上篇文章對(duì)logging做了基本介紹,我們可以使用logging來做日志的簡(jiǎn)單記錄。但實(shí)際項(xiàng)目應(yīng)用時(shí),我們一般會(huì)根據(jù)自身需要對(duì)其做二次封裝(loggingV2),然后在其他python文件中, 先import申明后直接調(diào)用。

廢話不多說,下面給幾個(gè)二次封裝的簡(jiǎn)單示例:

示例一:

loggingV2.py - 封裝

loggingV2.py

logMain.py - 應(yīng)用

logMain.py

示例二:

? ? 對(duì)上述示例進(jìn)行模塊化封裝,如下log.py

log.py

則任何聲明了log模塊的python文件都可以調(diào)用logging日志系統(tǒng),如下logMain.py

logMain.py

示例三:

? ??對(duì)上述示例進(jìn)行定制化封裝,如下myLog.py

????需求:

????1)同時(shí)實(shí)現(xiàn)終端顯示與日志文件保存

????2)日志文件名除日期外,增加顯示時(shí)間,精確到秒

????3)日志輸出級(jí)別可配置

? ? 4)日志保存路徑與文件名可配置

????5)日志跨天(或者小時(shí)/分鐘),另生成新文件保存

myLog.py(1)
myLog.py(2)

改寫logMain.py,如下:

logMain.py

示例四:

????對(duì)上述示例進(jìn)行異步線程封裝,如下myThreadLog.py

????需求:

????????1)獨(dú)立線程處理日志,不影響主程序性能

????????2)使用隊(duì)列異步處理日志記錄

myLog.py(1)
myLog.py(2)
myLog.py(3)

?繼續(xù)改寫logMain.py,如下:

logMain.py

? ? 注意 - 線程相關(guān)操作函數(shù)(如下):

????????1.threading.Thread() — 創(chuàng)建線程并初始化線程,可以為線程傳遞參數(shù)

????????2.threading.enumerate() — 返回一個(gè)包含正在運(yùn)行的線程的list

????????3.threading.activeCount(): 返回正在運(yùn)行的線程數(shù)量,與len(threading.enumerate())有相同的結(jié)果

????????4.Thread.start() — 啟動(dòng)線程

????????5.Thread.join() — 阻塞函數(shù),一直等到線程結(jié)束

????????6.Thread.isAlive() — 返回線程活動(dòng)狀態(tài)

????????7.Thread.setName() — 設(shè)置線程名

????????8.Thread.getName() — 獲取線程名

????????9.Thread.setDaemon() —?設(shè)置為后臺(tái)線程,這里默認(rèn)是False,設(shè)置為True之后則主線程不會(huì)再等待子線程結(jié)束才結(jié)束,而是主線程結(jié)束意味程序退出,子線程也立即結(jié)束,注意調(diào)用時(shí)必須設(shè)置在start()之前;

????????10.除了以上常用函數(shù),線程還經(jīng)常與互斥鎖Lock/事件Event/信號(hào)量Condition/隊(duì)列Queue等函數(shù)配合使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容