如何解决Yocto:食谱中的自定义彩色输出? 上下文问题
上下文
当我使用 bitbake 通过 Yocto 处理食谱时,我希望能够在屏幕上打印有用的输出。到目前为止,有几种方法可以做到这一点,但它们不是很实用。让我列举一下默认选项:
- 使用:
bbinfo "my message"
和bitbake --verbose
- 使用:
bbdebug 1 "my message"
和bitbake -D
(可以扩展到更多调试级别) - 使用:
bbwarn "my message"
,没有额外的标志
问题
使用选项 (1) 会在终端上输出大量不必要的混乱,并且还没有彩色输出。选项 (2) 是彩色的,但不幸的是,它也捕获了来自其他构建组件的大量调试消息,这些消息淹没了输出。我现在一直在使用选项 (3),因为它可以让我的消息脱颖而出,而不会出现其他不相关的信息。
所以我的问题是,如何为我自己的消息启用自定义日志记录(即绿色或蓝色)?这将使我更容易区分我想要的重要输出,而不会意外地使不必要的信息出现
解决方法
Bitbake 负责以适当的颜色打印日志消息。如果您想要不同的颜色,您可以通过修改添加新类型的日志消息: https://gitlab.com/yoctoproject/poky/-/blob/master/bitbake/lib/bb/build.py#L475 似乎是 bbwarn/bbdebug/bbplain/etc... shell 命令被转换为 Python 的 bb.warn,bb.debug,bb.plain 等.. 在此处定义:https://gitlab.com/yoctoproject/poky/-/blob/master/bitbake/lib/bb/__init__.py#L132-165 并且其颜色和日志级别在此处定义的 BBLogFormatter 类中定义:https://gitlab.com/yoctoproject/poky/-/blob/master/bitbake/lib/bb/msg.py#L22
我个人会尝试以与处理不同调试级别相同的方式添加警告级别,然后您可以将警告级别与特定颜色相关联。
然而,这会修改 bitbake 本身,这是无法通过 bbappends 或其他 btibake 机制实现的,因为它们是 Python 脚本。
否则,我想知道是否不可能在您想要使用的配方/任务/功能中定义自己的记录器,例如有一个 bbclass,它使用 Python logging
模块设置您需要的一切,只需使用它而不是 bbwarn 或 bb.warn。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。