#tf-log-levels-and-usage
Что такое TF_LOG и какие уровни осмысленно использовать?
Что отвечать
`TF_LOG` - env-переменная для вывода диагностики Terraform во время команды. Уровни: TRACE > DEBUG > INFO > WARN > ERROR. TRACE сыпет каждую HTTP-операцию провайдера, миллионы строк. DEBUG - чуть тише, обычно достаточно для понимания «что Terraform хотел сделать». INFO - стандартный production-уровень. Для long-running команд - `TF_LOG_PATH=tf.log` чтобы писать в файл, не засорять терминал. Полезный трюк: `TF_LOG_PROVIDER=DEBUG` отдельно от core - видишь только provider-логи без graph-internals.
Что хотят услышать
Senior должен: - различить TF_LOG (всё) и TF_LOG_PROVIDER (только провайдер) - часто нужен только второй - назвать `TF_LOG_PATH` для file-output - terminal лог теряет scrollback на больших стейтах - сказать что TRACE даёт raw HTTP requests/responses к провайдеру, бесценно для диагностики auth или timeout - упомянуть что в логах могут оседать secrets (Bearer-токены в Authorization-headers) - не делиться файлами без чистки
Подводные камни
- ✗ Запустить `TF_LOG=TRACE plan` без `TF_LOG_PATH` - терминал забивается, скроллить вверх до полезного - вечность
- ✗ Поделиться tf.log в Slack без редактирования - там Authorization headers и иногда state-выдержки
- ✗ Использовать TF_LOG=INFO когда DEBUG нужнее - INFO почти ничего не показывает, лишний раз поднимать не страшно
Follow-up
- ? Чем `TF_LOG_PROVIDER` отличается от просто `TF_LOG`?
- ? Какие уровни логирования имеет смысл смешивать?
- ? Что можно вычистить из TF_LOG-файла перед расшариванием?
Глубина в базе знаний