如果您曾经编写过任何 Python 代码,那么您很可能还必须添加一些print语句来弄清楚您的代码实际发生了什么。
但print独自一人只会让你走这么远。我在这里向您展示如何以最少的设置像专业人士一样开始记录。
在本文中,我们将了解如何将日志同时定向到控制台和文本文件,以便稍后检查日志。我还将向您展示如何通过在日志中包含一些额外数据来充分利用日志。
事不宜迟,让我们开始编码吧!
第 1 步:设置
我将使用 Python 3.7,但任何更高版本也可以使用。Python 3 版本之间的日志记录并没有真正改变。
我们还将使用该logging软件包,默认情况下它应该随您的 python 安装一起提供。
我将使用 Pycharm 作为我选择的 IDE,但您可以自由选择您最喜欢的。我在大多数宠物项目中都使用了几个模块。它们是如此常见,以至于我最终将它们全部制作了一个单独的包 - utils。
我假设您创建了一个名为的新 python 项目utils(并已将其放入__init__.py其中以使其成为适当的模块)。
第 2 步:实现日志记录逻辑
在我们的utils文件夹中,创建一个名为common_logging.py. 这是我们将编写所有日志记录逻辑的脚本。
我们的目标是创建一个通用函数,该函数将创建一个我们可以在任何其他项目中使用的记录器实例。
记录器实例基本上允许我们将所有print语句替换为 , 等logger.info,logger.error并附加一些在我们的日志行打印之前应用的自定义逻辑。
虽然print只是简单地输出它在控制台上获得的任何输入,但我们希望我们的高级记录器具有以下功能:
-
每个日志行都应以生成该行的时间作为前缀。出于显而易见的原因,这很有用,它使事件序列如何发生变得非常清晰,以至于在您的日志中没有它是犯罪的!
-
日志级别。日志行是否指示错误、警告或一般信息?每个日志行都应该以某种方式指定这一点。
-
我们想要包含一些关于正在做日志记录的信息。这将为我们提供一些关于在哪里查找日志源并为日志行提供更多上下文的线索。
只需几行日志,我们就可以实现所有这些以及更多。
首先,我们需要logging在脚本中导入模块。我们还将定义一个通用函数,该函数将创建并返回我们的记录器实例。
import logging
def setup_logger(name=__name__):
# Create a custom logger
logger = logging.getLogger(name)
logger.setLevel(logging.DEBUG)
return logger
这现在允许我们使用我们的记录器实例来记录。
对于那些对此不熟悉的人,而不是仅仅print记录您的所有数据