当你使用任何编程语言时,最终目标始终是拥有一个按照提供的指令正常运行的程序。然而,第一次就达到期望的结果是很少见的,你可能需要分析你的运行以识别错误。在现代软件中,理解运行时行为已成为标准做法,这就是日志记录派上用场的地方。
在本文中,我们将专注于Python的logging
库的基础知识,该库提供了所有必要的功能。它易于使用,在实施时提供了许多好处。虽然你可能目前正在使用print
函数来调试和验证结果,但在生产环境中,按照日志记录的标准进行工作是很重要的。Python的日志记录库可以让你做到这一点。
日志记录的级别
不同的日志级别是日志记录的一个重要方面,了解它们的工作原理至关重要。简而言之,你可以选择所需的级别来控制输出中出现的日志消息。logging
库为每个级别提供了单独的模块,它们的编号从10到50不等。所有级别都是不言而喻的,易于理解。但是,我们将详细介绍每个级别。
- Debug:此日志级别主要用于调试目的,在生产环境中没有用处。它的日志级别为10。
- Info:此日志级别提供了从程序行为中预期的信息。它的日志级别为20。
- Warning:此日志级别通知用户有意外事件发生,但不足以使程序停止。它的日志级别为30。
- Error:此日志级别用于报告运行时的意外故障。它会被提高以避免将来发生类似的故障。它的日志级别为40。
- Critical:此日志级别表示严重错误,可能导致应用程序停止运行。它的日志级别为50。
程序记录高于指定级别的消息,类似于级联。下面是它的工作原理示例。在basicConfig
中,我们应该提供所需的日志记录级别。结果,只有高于此级别的消息才会出现在输出中(包括当前级别)。因此,当我们想要查看WARNING
消息时,程序不会记录DEBUG
和INFO
级别的消息。
import logging
def test_logging():
logging.basicConfig(level=logging.WARNING)
logging.debug("DEBUG")
logging.info("INFO")
logging.warning("WARNING")
logging.error("ERROR")
logging.critical("CRITICAL")
test_logging()
# WARNING:root:WARNING
# ERROR:root:ERROR
# CRITICAL:root:CRITICAL
在开始时,我们将级别设置为WARNING
。因此,输出中只有三条消息 — 分别是WARNING
、ERROR
和CRITICAL
级别的消息。现在,让我们将级别修改为DEBUG
以观察输出。
import logging
def test_logging():
logging.basicConfig(level=logging.DEBUG)
logging.debug("DEBUG")
logging.info("INFO")
logging.warning(