В оболочке UEFI (которая поддерживает только Python 2.7) я запускаю скрипт python, который одновременно записывает сообщения журнала в файл журнала и на стандартный вывод.
Это делается среди прочего
logging.StreamHandler(sys.stdout)
Поскольку я хочу использовать оболочку без головы, я перенаправляю стандартный вывод через UART на терминал (VT100 +).
Это делается с помощью (скомпилированной настройки vt100 + по умолчанию):
load TerminalDxe.efi
Теперь я хочу получить цветной вывод на моем терминале (замазке). Поэтому я помещаю среди других строк:
COLOR_WARNING = '\033[93m'
COLOR_ENDC = '\033[0m'
logging.addLevelName( logging.WARNING, COLOR_WARNING + "WARNUNG" + COLOR_ENDC)
...
LOGGER.warning("")
Но, к сожалению, в моем терминале я вижу только:
^[[93mWARNUNG^[[0m
Как упоминалось ранее, я также записываю сообщения регистрации в файл. Если я распечатаю этот файл на терминал (из оболочки UEFI без python), набрав
type logfile.log
Я получаю ожидаемый результат в моем терминале:
Так что последовательность работает нормально. Однако это не так, когда вывод происходит из скрипта Python. Я пробовал это только с помощью print () или sys.stdout.write (), но пока не добился успеха.