在 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