Я ищу способ выполнить частичное форматирование строки в средствах форматирования журналов Python.
При попытке определить средство форматирования следующим образом:
formatter = logging.Formatter('[num-%d] %(levelname)s %(message)s' % (num,))
Я получу TypeError с «формат требует сопоставления», что разумно, поскольку интерпретатор не может найти «имя уровня» и «сообщение».
Конечно, я хотел бы обоих'levelname' и 'message' остаются неформатированными для обработки каркасом ведения журнала.
Как я вижу, есть два других способа решения проблемы:
format = '[num-' + str(num) + '] %(levelname)s %(message)s' % (num,)
format = '[num-%(num)d] %(levelname)s %(message)s' % dict(num=num, levelname='%(levelname)s', message='%(message)s')
Однако я нахожу оба решения несколько уродливыми, и я считаю, что должен быть лучший способ отформатировать только часть строки- либо в Python, либо с использованием встроенной в Python среды ведения логов.
Есть идеи?