Kivy - 日志

创建于 2024-12-03 / 35
字体: [默认] [大] [更大]

Python 的标准库包含日志模块,可帮助在 Python 应用程序中实现强大的事件日志系统。Kivy 的日志机制在此基础上构建,并增加了某些附加功能,例如在支持的终端上进行颜色编码输出、消息分类等。

每次运行 Kivy 应用程序时,您都会看到控制台窗口中显示的日志。它看起来像这样−

[INFO  ] [Logger  ] Record log in C:Usersuser.kivylogskivy_23-07-10_67.txt
[INFO  ] [deps    ] Successfully imported "kivy_deps.gstreamer" 0.3.3
[INFO  ] [deps    ] Successfully imported "kivy_deps.angle" 0.3.3
[INFO  ] [deps    ] Successfully imported "kivy_deps.glew" 0.3.1
[INFO  ] [deps    ] Successfully imported "kivy_deps.sdl2" 0.6.0
[INFO  ] [Kivy    ] v2.2.0
[INFO  ] [Kivy    ] Installed at "c:kivyenvLibsitepackageskivy\__init__.py"
[INFO  ] [Python  ] v3.11.2 (tags/v3.11.2:878ead1, Feb 7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)]
[INFO  ] [Python  ] Interpreter at "c:kivyenvScriptspython.exe"
[INFO  ] [Logger  ] Purge log fired. Processing...
[INFO  ] [Logger  ] Purge finished!
[INFO  ] [Factory ] 190 symbols loaded
[INFO  ] [Image   ] Providers: img_tex, img_dds, img_sdl2, img_pil (img_ffpyplayer ignored)
[INFO  ] [Window  ] Provider: sdl2
[INFO  ] [GL      ] Using the "OpenGL" graphics system
[INFO  ] [GL      ] GLEW initialization succeeded
[INFO  ] [GL      ] Backend used <glew>
[INFO  ] [GL      ] OpenGL version <b'4.6.0 - Build 31.0.101.3959'>
[INFO  ] [GL      ] OpenGL vendor <b'Intel'>
[INFO  ] [GL      ] OpenGL renderer <b'Intel(R) Iris(R) Xe Graphics'>
[INFO  ] [GL      ] OpenGL parsed version: 4, 6
[INFO  ] [GL      ] Shading version <b'4.60 - Build 31.0.101.3959'>
[INFO  ] [GL      ] Texture max size <16384>
[INFO  ] [GL      ] Texture max units <32>
[INFO  ] [Window  ] auto add sdl2 input provider
[INFO  ] [Window  ] virtual keyboard not allowed, single mode, not docked
[INFO  ] [Text    ] Provider: sdl2
[INFO  ] [Base    ] Start application main loop
[INFO  ] [GL      ] NPOT texture support is available

这些消息告诉您哪些硬件和驱动程序已被检测和初始化,哪些无法完成。

Kivy 库中的 Logger 类提供了一个单例实例,并在 kivy.logger 模块中定义。除了 Python 日志模块中的日志级别(调试、信息、警告、错误和严重)之外,Kivy 还有一个额外的跟踪级别。

Logger 对象具有与上述日志级别相对应的方法。这些方法中的每一个都接受一个字符串参数 - 消息 - 分为两部分,用冒号 (:) 符号分隔。第一部分用作标题 冒号后面的字符串是日志信息。

from kivy.logger import Logger

Logger.info('title: This is a info message.')
Logger.debug('title: This is a debug message.')

在 Kivy 的配置文件中,默认日志级别设置为 info。因此,您会看到这么长的日志输出。您可以通过 Logger 对象的 setlevel() 方法将其设置为任何所需的日志记录级别。

from kivy.logger import Logger, LOG_LEVELS

Logger.setLevel(LOG_LEVELS["debug"])

Kivy 的日志记录机制由环境变量 KIVY_LOG_MODE 控制,该变量有三个可能的值:KIVY、PYTHON、MIXED。

默认的 KIVY_LOG_MODE 是 KIVY,因此系统中的所有日志消息都会输出到 Kivy 日志文件和控制台。

如果将其设置为 PYTHON 模式,则不会添加任何处理程序,也不会捕获 sys.stderr 输出。客户端可以自行添加适当的处理程序。

在 MIXED 模式下,处理程序直接添加到 Kivy 的 Logger 对象,并且传播被关闭。 sys.stderr 不会被重定向。

所有与日志相关的配置参数都可以在 config.ini 文件的 [Kivy] 部分中找到。参数及其默认值为 −

log_dir = logs
log_enable = 1
log_level = info
log_name = kivy_%y-%m-%d_%_.txt
log_maxfiles = 100

请注意,即使未启用记录器,您也可以访问最后 100 条 LogRecords。

from kivy.logger import LoggerHistory
print(LoggerHistory.history)


0 人点赞过