Python logging日志模塊的核心用法與實(shí)操技巧
logging 日志介紹
logging 是 Python 標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,它提供了靈活的日志記錄功能。通過(guò) logging,開(kāi)發(fā)者可以方便地將日志信息輸出到控制臺(tái)、文件、網(wǎng)絡(luò)等多種目標(biāo),同時(shí)支持不同級(jí)別的日志記錄,以滿足不同場(chǎng)景下的需求。
一、logging 使用示例
1.1 全局logging基礎(chǔ)使用
import logging
logging.basicConfig(level=logging.INFO)
logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')
1.2 自定義logger并輸出到控制臺(tái)
# 導(dǎo)入 logging 模塊
import logging
logging.basicConfig(level=logging.INFO)
# 獲取一個(gè)日志記錄器對(duì)象,名稱為當(dāng)前模塊的名稱
logger = logging.getLogger(__name__)
# 設(shè)置日志記錄器的級(jí)別為 DEBUG
# 這意味著所有級(jí)別為 DEBUG 及以上的日志都會(huì)被記錄
logger.setLevel(logging.DEBUG)
if __name__ == "__main__":
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')
執(zhí)行結(jié)果:
This is a warning message This is an error message This is a critical message
1.3 自定義logger并輸出到日志文件
# 導(dǎo)入 logging 模塊
import logging
# 獲取一個(gè)日志記錄器對(duì)象,名稱為當(dāng)前模塊的名稱
logger = logging.getLogger(__name__)
# 設(shè)置日志記錄器的級(jí)別為 DEBUG
# 這意味著所有級(jí)別為 DEBUG 及以上的日志都會(huì)被記錄
logger.setLevel(logging.DEBUG)
# 創(chuàng)建一個(gè) FileHandler 對(duì)象,指定日志文件的名稱為 "test.log"
# 這個(gè)處理器會(huì)將日志信息寫入到指定的文件中
handler = logging.FileHandler(filename="test.log")
# 將這個(gè)處理器添加到日志記錄器中
# 這樣,日志記錄器就會(huì)使用這個(gè)處理器來(lái)處理日志信息
logger.addHandler(handler)
if __name__ == "__main__":
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')
執(zhí)行結(jié)果(test.log文件內(nèi)容):
This is a debug message This is an info message This is a warning message This is an error message This is a critical message
1.4 設(shè)置自定義日志格式
# 導(dǎo)入 logging 模塊
import logging
# 獲取一個(gè)日志記錄器對(duì)象,名稱為當(dāng)前模塊的名稱
logger = logging.getLogger(__name__)
# 設(shè)置日志記錄器的級(jí)別為 DEBUG
# 這意味著所有級(jí)別為 DEBUG 及以上的日志都會(huì)被記錄
logger.setLevel(logging.DEBUG)
# 創(chuàng)建一個(gè) FileHandler 對(duì)象,指定日志文件的名稱為 "test.log"
# 這個(gè)處理器會(huì)將日志信息寫入到指定的文件中
handler = logging.FileHandler(filename="test.log")
# 創(chuàng)建一個(gè)日志格式器對(duì)象
formatter = logging.Formatter(
"%(asctime)s %(levelname)s [%(name)s] [%(filename)s (%(funcName)s:%(lineno)d)] - %(message)s"
)
# 將格式器設(shè)置到處理器上
handler.setFormatter(formatter)
# 將這個(gè)處理器添加到日志記錄器中
# 這樣,日志記錄器就會(huì)使用這個(gè)處理器來(lái)處理日志信息
logger.addHandler(handler)
if __name__ == "__main__":
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')
二、關(guān)鍵知識(shí)點(diǎn)說(shuō)明
2.1 日志記錄器獲取
通過(guò) logging.getLogger(__name__) 獲取日志記錄器對(duì)象,name 為當(dāng)前模塊的名稱。使用模塊名稱作為日志記錄器的名稱有助于在大型項(xiàng)目中區(qū)分不同模塊的日志。
2.2 日志級(jí)別規(guī)則
日志級(jí)別金字塔(優(yōu)先級(jí)從低到高):DEBUG < INFO < WARNING < ERROR < CRITICAL
- 日志記錄器的級(jí)別通過(guò)
logger.setLevel(logging.XXX)設(shè)置 - 只有高于或等于設(shè)定級(jí)別的日志才會(huì)被處理和記錄
2.3 日志處理器
- FileHandler:用于將日志寫入文件,通過(guò)
logging.FileHandler(filename="文件名")創(chuàng)建 - StreamHandler:用于將日志輸出到控制臺(tái)(示例中注釋部分可啟用)
- 一個(gè)日志記錄器可以添加多個(gè)處理器,實(shí)現(xiàn)日志多目標(biāo)輸出(如同時(shí)輸出到控制臺(tái)和文件)
2.4 日志格式占位符說(shuō)明
| 格式占位符 | 說(shuō)明 |
|---|---|
| %(asctime)s | 日志記錄的時(shí)間戳,通常顯示為日期和時(shí)間。 |
| %(levelname)s | 日志級(jí)別(如 DEBUG、INFO、WARNING、ERROR、CRITICAL)。 |
| %(name)s | 日志記錄器的名稱,通常為模塊名稱。 |
| %(filename)s | 日志記錄發(fā)生的文件名。 |
| %(funcName)s | 日志記錄發(fā)生的函數(shù)名。 |
| %(lineno)d | 日志記錄發(fā)生的行號(hào)。 |
| %(message)s | 日志消息本身。 |
2.5 格式器與處理器綁定
通過(guò) handler.setFormatter(formatter) 將格式器對(duì)象設(shè)置到處理器上,處理器會(huì)按照指定格式格式化日志信息后輸出。
通過(guò)這種方式,可以控制日志信息的輸出格式,可以包含如:時(shí)間戳、日志級(jí)別、文件名、函數(shù)名、行號(hào)等。
以上就是Python logging日志模塊的核心用法與實(shí)操技巧的詳細(xì)內(nèi)容,更多關(guān)于Python logging日志模塊的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Flask框架通過(guò)Flask_login實(shí)現(xiàn)用戶登錄功能示例
這篇文章主要介紹了Flask框架通過(guò)Flask_login實(shí)現(xiàn)用戶登錄功能,結(jié)合實(shí)例形式較為詳細(xì)的分析了flask框架使用Flask_login實(shí)現(xiàn)用戶登陸功能的具體操作步驟、相關(guān)實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下2018-07-07
Python+drawpad實(shí)現(xiàn)CPU監(jiān)控小程序
這篇文章主要為大家詳細(xì)介紹了如何利用Python+drawpad實(shí)現(xiàn)一個(gè)簡(jiǎn)單的CPU監(jiān)控小程序,文中示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下2022-08-08
Python?pygame項(xiàng)目實(shí)戰(zhàn)英雄動(dòng)畫特效實(shí)現(xiàn)
這篇文章主要為大家介紹了Python?pygame項(xiàng)目實(shí)戰(zhàn)英雄動(dòng)畫特效實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Pycharm 創(chuàng)建 Django admin 用戶名和密碼的實(shí)例
今天小編就為大家分享一篇Pycharm 創(chuàng)建 Django admin 用戶名和密碼的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
使用apiDoc實(shí)現(xiàn)python接口文檔編寫
今天小編就為大家分享一篇使用apiDoc實(shí)現(xiàn)python接口文檔編寫,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
Django框架中render_to_response()函數(shù)的使用方法
這篇文章主要介紹了Django框架中render_to_response()函數(shù)的使用方法,注意范例中該方法的參數(shù)的使用,需要的朋友可以參考下2015-07-07
Postman安裝與使用詳細(xì)教程 附postman離線安裝包
這篇文章主要介紹了Postman安裝與使用詳細(xì)教程 附postman離線安裝包,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Django2 連接MySQL及model測(cè)試實(shí)例分析
這篇文章主要介紹了Django2 連接MySQL及model測(cè)試,結(jié)合實(shí)例形式分析了Django2框架使用pymysql庫(kù)進(jìn)行mysql數(shù)據(jù)庫(kù)連接與model調(diào)用測(cè)試方法,需要的朋友可以參考下2019-12-12
Python如何利用IMAP實(shí)現(xiàn)郵箱客戶端功能
IMAP是另一種讀取電子郵件的協(xié)議,IMAP是讀取郵件服務(wù)器的電子郵件與公布欄信息的方法,也就是說(shuō)IMAP 允許客戶端的郵件程序存取遠(yuǎn)程的信息,這篇文章主要給大家介紹了關(guān)于Python如何利用IMAP實(shí)現(xiàn)郵箱客戶端功能的相關(guān)資料,需要的朋友可以參考下2021-09-09

