【问题标题】:Yocto : Custom colored output in recipes?Yocto:食谱中的自定义颜色输出?
【发布时间】:2021-07-16 15:43:43
【问题描述】:

上下文

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

  1. 使用:bbinfo "my message"bitbake --verbose
  2. 使用:bbdebug 1 "my message"bitbake -D(可以针对更多调试级别进行扩展)
  3. 使用:bbwarn "my message",没有额外的标志

问题

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

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

【问题讨论】:

    标签: yocto bitbake openembedded recipe


    【解决方案1】:

    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。

    【讨论】:

    • 感谢您的回复!我实际上尝试添加我自己的python函数,使用printf,然后甚至使用echo的bash函数来尝试将消息打印到屏幕上。然而,似乎 Yocto 正在将它指向 STDOUT 以外的其他地方,因为它没有出现在屏幕上。只显示使用日志功能的消息。
    • 如果我们可以确认除了修改 bitbake 本身之外没有其他方法可以让消息出现,那么我会接受您的回答。
    • 我并不太惊讶,它可能存储在${WORKDIR}/temp/log.do_<task>而不是打印在控制台上。
    • 我认为除了修改 Yocto ATM 之外没有更好的解决方法,所以我会接受你的回答。
    猜你喜欢
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 2021-05-18
    • 2021-04-16
    • 2019-12-05
    • 2018-07-17
    • 1970-01-01
    • 2020-11-23
    相关资源
    最近更新 更多