Kivy 简明教程
Kivy - Logger
Python 的标准库包含 logging 模块,该模块帮助在 Python 应用程序中实现健壮的事件日志记录系统。Kivy 的日志记录机制建立在该模块的基础上,并包含某些其他功能,例如受支持终端的彩色编码输出、消息分类等。
每次运行一个 Kivy 应用程序时,都会在控制台窗口中看到显示的日志。它类似于以下 -
[INFO ] [Logger ] Record log in C:\Users\user\.kivy\logs\kivy_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:\kivyenv\Lib\sitepackages\kivy\__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:\kivyenv\Scripts\python.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)