1. 日志級(jí)別:精準(zhǔn)控制日志信息
logging 模塊定義了五種標(biāo)準(zhǔn)日志級(jí)別:DEBUG、INFO、WARNING、ERROR 和 CRITICAL。這些級(jí)別決定了要記錄的消息的重要性和嚴(yán)重性。默認(rèn)情況下,logging 僅記錄 WARNING 及以上級(jí)別的消息。您可以通過設(shè)置日志器的級(jí)別來微調(diào)日志的行為。例如:
import logging # 設(shè)置 root 日志器的級(jí)別為 INFO logging.basicConfig(level=logging.INFO)
登錄后復(fù)制
2. 日志格式:定制日志輸出
logging 模塊提供了強(qiáng)大的日志格式機(jī)制,允許您自定義日志消息的外觀。格式字符串指定了日志消息中包含的信息,例如時(shí)間戳、日志級(jí)別、消息文本和堆棧跟蹤。默認(rèn)格式為:
"[%(asctime)s] %(levelname)s %(module)s.%(funcName)s: %(message)s"
登錄后復(fù)制
您可以使用以下代碼自定義格式:
# 設(shè)置自定義日志格式 logging.basicConfig(fORMat="%(asctime)s %(levelname)-8s %(message)s")
登錄后復(fù)制
3. 日志處理器:擴(kuò)展日志輸出目的地
處理器負(fù)責(zé)將日志消息發(fā)送到特定目標(biāo),例如文件、控制臺(tái)或遠(yuǎn)程服務(wù)器。logging 模塊提供了幾種內(nèi)置處理器,如 StreamHandler 和 FileHandler。
創(chuàng)建自定義處理器也非常簡單。您需要?jiǎng)?chuàng)建一個(gè)類并覆蓋 handle 方法,該方法將日志消息寫入目標(biāo)。例如,將日志寫入自定義文件:
class MyFileHandler(logging.FileHandler):
def __init__(self, filename):
super().__init__(filename)
# 將自定義處理器添加到 root 日志器
logging.getLogger().addHandler(MyFileHandler("my_log.txt"))
登錄后復(fù)制
4. 日志篩選器:過濾不必要的日志消息
篩選器允許您根據(jù)特定的條件過濾日志消息。您可以基于日志級(jí)別、消息文本或其他標(biāo)準(zhǔn)來創(chuàng)建篩選器。篩選器可以附加到處理器,以僅允許滿足條件的消息通過。
例如,忽略 WARNING 級(jí)別的消息的篩選器:
import logging # 創(chuàng)建篩選器忽略 WARNING 級(jí)別的消息 filter = logging.Filter() filter.filter = lambda record: record.levelno < logging.WARNING # 將篩選器添加到 root 日志器的處理器 logging.getLogger().handlers[0].addFilter(filter)
登錄后復(fù)制
5. 日志上下文管理:優(yōu)雅的日志記錄
logging.LoggerContextManager 上下文管理器提供了一種簡潔的方式來記錄塊中的消息。這對(duì)于臨時(shí)更改日志級(jí)別或禁用日志記錄非常有用。
with logging.LoggerContextManager():
# 臨時(shí)將日志級(jí)別設(shè)置為 DEBUG
logging.getLogger().setLevel(logging.DEBUG)
# 在塊內(nèi)記錄 DEBUG 級(jí)的消息
logging.debug("調(diào)試信息")
登錄后復(fù)制
6. 高級(jí)技巧:
使用字典配置器:使用字典配置器提供更靈活的配置選項(xiàng)。
創(chuàng)建自己的日志級(jí)別:通過編寫自定義日志級(jí)別來擴(kuò)展內(nèi)置級(jí)別。
使用日志記錄框架:例如 structlog 或 loguru,提供高級(jí)功能和可擴(kuò)展性。
異步日志記錄:通過使用異步處理器來提高大型應(yīng)用程序的性能。
日志記錄異常:使用 logging.exception() 或 logging.log_exception() 記錄異常堆棧跟蹤。
結(jié)論:
python logging 模塊是一個(gè)功能強(qiáng)大的工具,可用于有效地記錄應(yīng)用程序活動(dòng)。通過理解日志級(jí)別、日志格式、日志處理器、日志篩選器和高級(jí)技巧,您可以充分利用 logging 的功能,為您的應(yīng)用程序創(chuàng)建靈活且有意義的日志記錄解決方案。






