在 Python 中記錄到標準輸出 stdout

Muhammad Maisam Abbas 2023年1月30日 2021年7月12日
  1. 使用 Python 中的 logging.basicConfig() 函式登入到 stdout
  2. 使用 Python 中的 logging.StreamHandler() 函式登入到 stdout
在 Python 中記錄到標準輸出 stdout

本教程將介紹在 Python 中將日誌寫入檔案和 stdout 的方法。

使用 Python 中的 logging.basicConfig() 函式登入到 stdout

如果我們想將日誌列印到控制檯視窗並將日誌寫入檔案中,我們可以使用 logging.basicConfig() 函式 來完成此過程。logging.basicConfig() 函式為 Python 中的日誌記錄配置一些基本引數。我們可以使用此函式的 stream 引數來指定我們也希望在控制檯視窗上列印此日誌。其餘配置與使用 logging.basicConfig() 函式將日誌寫入檔案相同。以下程式碼演示了我們如何將日誌寫入控制檯視窗。

import logging
import sys

#Creating and Configuring Logger

Log_Format = "%(levelname)s %(asctime)s - %(message)s"

logging.basicConfig(filename = "logfile.log",
                    stream = sys.stdout, 
                    filemode = "w",
                    format = Log_Format, 
                    level = logging.ERROR)

logger = logging.getLogger()

#Testing our Logger

logger.error("Our First Error Message")

輸出:

2021-06-13 05:15:24,093 - root - ERROR - Our First Error Message

使用 Python 中的 logging.StreamHandler() 函式登入到 stdout

我們還可以使用 logging.StreamHandler() 函式將日誌寫入 Python 中的控制檯視窗。通過將 sys.stdout 傳遞給 logging.StreamHandler() 函式,我們可以建立一個可以將日誌訊息列印到控制檯視窗的流處理程式。然後我們可以使用 addHandler() 函式將此流處理程式新增到我們的記錄器物件。以下程式碼片段向我們展示瞭如何使用 logging.StreamHandler() 函式將日誌訊息列印到控制檯視窗。

import logging
import sys

logger = logging.getLogger()
fileHandler = logging.FileHandler("logfile.log")
streamHandler = logging.StreamHandler(sys.stdout)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
streamHandler.setFormatter(formatter)
fileHandler.setFormatter(formatter)
logger.addHandler(streamHandler)
logger.addHandler(fileHandler)
logger.error("This is the first error")

輸出:

2021-06-13 05:03:37,510 - root - ERROR - This is the first error

我們在上面的程式碼中使用 logging.FileHandler()logging.StreamHandler() 函式將日誌訊息 This is the first error 寫入檔案 logfile.log 和控制檯視窗。我們首先建立了一個 logger 物件,我們將使用該物件通過 logging.getLogger() 函式編寫日誌。然後,我們建立了一個檔案處理程式 fileHandler 併為其分配了 logging.FileHandler('logfile.log')

之後,我們建立了一個流處理程式 streamHandler,並分配了 logging.StreamHandler(sys.stdout)。之後,我們建立了一個格式化程式來使用 logging.Formatter() 函式格式化我們的輸出,並使用 setFormatter() 函式為 fileHandlerstreamHandler 設定格式化程式。在上一步之後,我們使用 addHandler() 函式將兩個新的處理程式新增到我們的記錄器物件中。最後,我們使用 logger.error('This is the first error') 將錯誤訊息寫入我們的檔案和控制檯視窗。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

相關文章 - Python Logging