在 Python 中將日誌寫入檔案
本教程將介紹在 Python 中將日誌寫入檔案的方法。
使用 Python 中的 logging 模組將日誌寫入檔案
日誌用於除錯程式並找出出錯的地方。logging 模組 用於在 Python 中將資料記錄到檔案中。我們可以使用 logging.basicConfig() 函式來配置要寫入特定檔案的日誌。預設情況下,我們可以使用 logging 模組記錄 5 種型別的行。這些訊息型別包括除錯、資訊、警告、錯誤和嚴重。儘管如此,我們可以通過編碼將這個數字增加到我們需要的任何數量。以下程式碼示例向我們展示瞭如何使用 logging.basicConfig() 函式將日誌寫入檔案。
import logging
# Creating and Configuring Logger
Log_Format = "%(levelname)s %(asctime)s - %(message)s"
logging.basicConfig(
filename="logfile.log", filemode="w", format=Log_Format, level=logging.ERROR
)
logger = logging.getLogger()
# Testing our Logger
logger.error("Our First Log Message")
logfile.log 的檔案內容:
ERROR 2021-06-13 04:14:29,604 - Our First Log Message
我們使用上面程式碼中的 logging.basicConfig() 函式編寫了級別為 error 的日誌訊息 Our First Log Message 以及正確的日誌記錄日期和時間。編寫日誌時最重要的是它們發生的日期和時間。因此,我們首先在 Log_Format 字串中為我們的日誌建立了一個格式。這種格式包括日誌的級別、發生的日期和時間以及要寫入的訊息。
然後,我們使用 logging.basicConfig() 函式的 filename 引數來指定日誌檔案。我們將值 a 分配給 logging.basicConfig() 函式的 filemode 引數,以在 append 模式下開啟檔案,這樣每次有新日誌時就不會刪除以前的日誌。然後我們將 format 引數設定為 Log_Format。在該步驟之後,我們將 logging.ERROR 分配給 level 引數以指定日誌的最低階別錯誤。我們使用 logger = logging.getLogger() 建立了一個記錄器物件來寫入日誌訊息。最後,我們用 logger.error("Our First Log Message") 編寫了錯誤訊息。
使用 Python 中的 logging.FileHandler() 函式將日誌寫入檔案
我們還可以使用 logging.FileHandler() 函式 在 Python 中將日誌寫入檔案。此函式採用我們要寫入日誌的檔案路徑。然後我們可以使用 addHandler() 函式將此處理程式新增到我們的記錄器物件中。下面的程式碼演示瞭如何使用 logging.FileHandler() 函式將日誌寫入檔案。
import logging
logger = logging.getLogger()
handler = logging.FileHandler("logfile.log")
logger.addHandler(handler)
logger.error("Our First Log Message")
logfile.log 內容:
Our First Log Message
我們使用上面程式碼中的 logging.FileHandler() 函式將日誌訊息 Our First Log Message 寫入檔案 logfile.log。我們首先建立了一個 logger 物件,我們將使用該物件通過 logging.getLogger() 函式編寫日誌。然後,我們建立一個檔案處理程式 handler,併為其分配 logging.FileHandler('logfile.log')。之後,我們使用 logger.addHandler(handler) 將這個新的 handler 新增到我們的記錄器物件中。最後,我們使用 logger.error('Our First Log Message') 將錯誤訊息寫入我們的檔案。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn