Yocto:食谱中的自定义彩色输出?

Yocto : Custom colored output in recipes?

上下文

当我使用 bitbake 与 Yocto 一起处理食谱时,我希望能够在屏幕上打印有用的输出。到目前为止,有几种方法可以做到这一点,但它们不是很实用。让我列举一下默认选项:

  1. 使用:bbinfo "my message"bitbake --verbose
  2. 使用:bbdebug 1 "my message"bitbake -D(可以缩放以获得更多调试级别)
  3. 使用:bbwarn "my message",没有额外的标志

问题

使用选项 (1) 会在终端上输出很多不必要的混乱,并且还会出现没有彩色输出的问题。选项 (2) 是彩色的,但不幸的是,它还捕获了来自其他构建组件的大量调试消息,这些消息淹没了输出。我现在一直在使用选项 (3),因为它使我的消息脱颖而出,同时又不会让其他不相关的信息出现。

所以我的问题是,如何为我自己的消息启用自定义日志记录(即绿色或蓝色)?这将使我更容易区分我想要的重要输出,而不会意外地使不必要的信息出现

Bitbake 负责以适当的颜色打印日志消息。如果你想使用不同的颜色,你可以通过修改来添加新类型的日志消息:https://gitlab.com/yoctoproject/poky/-/blob/master/bitbake/lib/bb/build.py#L475 seems to be where the bbwarn/bbdebug/bbplain/etc... shell commands are translated to Python's bb.warn, bb.debug, bb.plain, etc.. defined here: https://gitlab.com/yoctoproject/poky/-/blob/master/bitbake/lib/bb/__init__.py#L132-165 and whose colors and loglevels are defined in BBLogFormatter class defined here: https://gitlab.com/yoctoproject/poky/-/blob/master/bitbake/lib/bb/msg.py#L22

我个人会尝试以与处理不同调试级别相同的方式添加警告级别,然后您可以将警告级别与特定颜色相关联。

然而,这修改了 bitbake 本身,这是不可能通过 bbappends 或其他 btibake 机制实现的,因为它们是 Python 脚本。

否则,我想知道是否可以只定义您自己的记录器 in/for 您想要使用的 recipes/tasks/functions,例如有一个 bbclass,它使用 Python logging 模块设置你需要的一切,只需使用它而不是 bbwarn 或 bb.warn.