当前位置: 首页 > 科技观察

使用logzero在Python中进行简单的日志记录

时间:2023-03-19 18:34:55 科技观察

快速浏览一个方便的日志记录库,以帮助您掌握这个重要的编程概念。logzero库使日志记录像打印语句一样简单,这是简单性的杰出示例。我不确定logzero的名称是否适合“零样板库”,如pygame-zero、GPIOZero和guizero,但它肯定属于这一类。它是一个Python库,使日志记录变得简单明了。您可以使用它的基本日志记录到标准输出,就像您可以使用打印来获取信息和调试一样,更高级的日志记录(例如记录到文件)的学习曲线是平滑的。首先,使用pip安装logzero:$sudopip3installlogzero在Python文件中,导入logger并尝试以下一个或所有日志实例:fromlogzeroimportloggerlogger.debug("hello")logger.info("info")logger.warning("warning")logger.error("error")输出以易于阅读的方式自动着色:Python、RaspberryPi:importlogger所以现在不要使用print来了解发生了什么,而是使用logging与关联的日志级别设备。在Python中记录到一个文件如果您已经读到这里并且会在编写代码时进行一些更改,那么对我来说就足够了。如果您想了解更多,请继续阅读!写入标准输出对于测试新程序来说很好,但只有在您登录到运行脚本的计算机时才有用。很多时候,您需要远程执行代码并在事后查看错误。在这种情况下,记录到文件会很有帮助。让我们试试看:fromlogzeroimportlogger,logfilelogfile('/home/pi/test.log')您的日志条目现在将记录到文件test.log中。请记住确保脚本有权写入文件及其目录结构。您还可以指定更多选项:logfile('/home/pi/test.log',maxBytes=1e6,backupCount=3)现在,当提供给test.log文件的数据达到1MB(106字节)时,它将通过test.log.1、test.log.2等文件依次写入。此行为可防止系统打开和关闭太多I/O密集型日志文件,以至于系统无法打开和关闭它们。为了更具技术性,您还可以登录到/var/log。假设你在Linux上,创建一个目录并让用户成为所有者,这样它就可以写入:$sudomkdir/var/log/test$sudochownpi/var/log/test然后在你的Python代码中,更改日志文件路径:logfile('/var/log/test/test.log',maxBytes=1e6,backupCount=3)当你想在日志文件中捕获异常时,你可以使用logging.exception:try:c=a/bexceptExceptionase:logger.exception(e)这将输出(如果b为零):[E19042223:41:59test:9]除以零Traceback(最近调用最后):文件“test.py",第7行,在c=a/bZeroDivisionError:除以零,您将获得带有完整回溯的日志。或者,您可以使用logging.error并隐藏回溯:try:c=a/beexceptExceptionase:logger.error(f"{e.__class__.__name__}:{e}")现在,将产生更简洁的结果:[E19042300:04:16test:9]ZeroDivisionError:除以zeroLogging输出您可以在logzero.readthedocs.io阅读更多选项。logzero专为教育而生对于新手程序员来说,日志记录可能是一个具有挑战性的概念。大多数框架依赖流量控制和广泛的变量操作来生成有意义的日志,但logzero不同。由于它的语法类似于print语句,因此它在教育上是成功的,因为它消除了解释其他概念的需要。在您的下一个项目中尝试一下。