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

开发 后端
logzero 库使日志记录就像打印语句一样容易,是简单性的杰出代表。我不确定 logzero 的名称是否要与 pygame-zero、GPIO Zero 和 guizero 这样的 “zero 样板库”契合,但是肯定属于该类别。它是一个 Python 库,可以使日志记录变得简单明了。

[[317742]]

快速了解一个方便的日志库,来帮助你掌握这个重要的编程概念。

logzero 库使日志记录就像打印语句一样容易,是简单性的杰出代表。我不确定 logzero 的名称是否要与 pygame-zero、GPIO Zero 和 guizero 这样的 “zero 样板库”契合,但是肯定属于该类别。它是一个 Python 库,可以使日志记录变得简单明了。

你可以使用它基本的记录到标准输出的日志记录,就像你可以使用 print 来获得信息和调试一样,学习它的更高级日志记录(例如记录到文件)的学习曲线也很平滑。

首先,使用 pip 安装 logzero:

  1. $ sudo pip3 install logzero

在 Python 文件中,导入 logger 并尝试以下一个或所有日志实例:

  1. from logzero import logger
  2.  
  3. logger.debug("hello")
  4. logger.info("info")
  5. logger.warning("warning")
  6. logger.error("error")

输出以易于阅读的方式自动着色:

 

Python, Raspberry Pi: import logger

因此现在不要再使用 print 来了解发生了什么,而应使用有相关日志级别的日志器。

在 Python 中将日志写入文件

如果你阅读至此,并会在你写代码时做一点改变,这对我就足够了。如果你要了解更多,请继续阅读!

写到标准输出对于测试新程序不错,但是仅当你登录到运行脚本的计算机时才有用。在很多时候,你需要远程执行代码并在事后查看错误。这种情况下,记录到文件很有帮助。让我们尝试一下:

  1. from logzero import logger, logfile
  2.  
  3. logfile('/home/pi/test.log')

现在,你的日志条目将记录到文件 test.log 中。记住确保脚本有权限写入该文件及其目录结构。

你也可以指定更多选项:

  1. logfile('/home/pi/test.log', maxBytes=1e6, backupCount=3)

现在,当提供给 test.log 文件的数据达到 1MB(106 字节)时,它将通过 test.log.1test.log.2 等文件轮替写入。这种行为可以避免系统打开和关闭大量 I/O 密集的日志文件,以至于系统无法打开和关闭。更专业一点,你或许还要记录到 /var/log。假设你使用的是 Linux,那么创建一个目录并将用户设为所有者,以便可以写入该目录:

  1. $ sudo mkdir /var/log/test
  2. $ sudo chown pi /var/log/test

然后在你的 Python 代码中,更改 logfile 路径:

  1. logfile('/var/log/test/test.log', maxBytes=1e6, backupCount=3)

当要在 logfile 中捕获异常时,可以使用 logging.exception

  1. try:
  2.     c = a / b
  3. except Exception as e:
  4.     logger.exception(e)

这将输出(在 b 为零的情况下):

  1. [E 190422 23:41:59 test:9] division by zero
  2.      Traceback (most recent call last):
  3.        File "test.py", line 7, in
  4.          c = a / b
  5.      ZeroDivisionError: division by zero

你会得到日志,还有完整回溯。另外,你可以使用 logging.error 并隐藏回溯:

  1. try:
  2.     c = a / b
  3. except Exception as e:
  4.     logger.error(f"{e.__class__.__name__}: {e}")

现在,将产生更简洁的结果:

  1. [E 190423 00:04:16 test:9] ZeroDivisionError: division by zero

 

Logging output

你可以在 logzero.readthedocs.io 中阅读更多选项。

logzero 为教育而生

对于新手程序员来说,日志记录可能是一个具有挑战性的概念。大多数框架依赖于流控制和大量变量操作来生成有意义的日志,但是 logzero 不同。由于它的语法类似于 print 语句,因此它在教育上很成功,因为它无需解释其他概念。在你的下个项目中试试它。 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2021-08-27 14:36:01

主题建模BerTopic

2019-04-18 09:15:05

DaskPython计算

2023-10-18 18:31:04

SQL查询数据

2023-08-02 08:02:30

Redis数据原生方法

2020-06-30 08:23:00

JavaScript开发技术

2024-05-06 13:34:28

WireGoogleGo

2009-06-22 10:29:11

集成测试Spring

2011-08-01 10:41:59

Xcode 条件编译

2009-12-28 13:59:12

ADO调用存储过程

2009-03-03 09:00:57

Silverlight数据验证UI控件

2021-03-24 09:30:02

Jupyter not单元测试代码

2020-08-11 13:00:34

GNU bcLinuxShell

2023-06-08 14:10:00

VSCodePython代码

2011-11-30 15:18:06

JavaJBossJ2EE

2016-08-22 11:46:53

GitLinux开源

2009-12-11 09:43:43

静态路由配置

2012-04-09 13:39:37

ibmdw

2010-03-30 18:48:24

Oracle 学习

2021-04-16 20:46:21

PythonXGBoost 特征

2020-09-17 06:42:31

ReactStoreon前端
点赞
收藏

51CTO技术栈公众号