隨著軟件日益復雜和大規模化,日志對于軟件的開發、測試、運維與排錯越來越重要。日志機制使我們能夠對程序的狀態建立一個有序的歷史記錄,便于開發者及時發現問題并進行處理。Python 作為一門強大的編程語言,日志模塊也是其強項之一。其自帶的日志模塊 logging 功能全面,功能強大,而且易于使用,同時還支持日志分級以及輸出定向等功能。
然而,logging 模塊并不能解決所有日志記錄的需求,有時候需要按照一定的格式輸出并記錄日志內容,這時候我們需要自定義日志模塊。
下面是一個簡單的 Python 自定義日志模塊的實現示例:
import logging logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) # 設置日志等級為 info formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') file_handler = logging.FileHandler('example.log') # 將日志記錄輸出到文件 file_handler.setFormatter(formatter) stream_handler = logging.StreamHandler() # 將日志輸出到控制臺 stream_handler.setFormatter(formatter) logger.addHandler(file_handler) logger.addHandler(stream_handler) def custom_log(msg): logger.debug(msg) # 記錄 debug 級別的日志 logger.info(msg) # 記錄 info 級別的日志 logger.warning(msg) # 記錄 warning 級別的日志 logger.error(msg) # 記錄 error 級別的日志 logger.critical(msg) # 記錄 critical 級別的日志
上述代碼定義了一個自定義日志模塊,其中將日志輸出到 example.log 文件以及控制臺,并按照時間、名稱、日志級別和消息的格式輸出日志內容。
在需要記錄日志的地方,可以直接調用 custom_log 函數,并傳入需要記錄的消息。通過 logger 屬性記錄的日志,可以方便地在日志級別不同時,將不同級別的日志消息輸出到不同的目標終端上。這樣,我們就可以方便地自定義并實現 Python 日志輸出了。