在 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