tgoop.com/dev_easy_notes/303
Last Update:
Пока я писал предыдущий пост я подумал вот о какой штуке. Смотрите, я говорил о том, что всякие либы придумывают свои уровни логирования и часто странные. Кто писал плагины для Gradle вы знаете, чтобы логи выводились в общую портянку которую генерит gradle, то для этого нужно использовать уровень логирования lifecycle
. lifecycle
– уровень который включен по умолчанию и выводится всегда, и выключить его можно только через флаг —quiet
.
В чем суть, в Gradle смешали две фундаментально разные вещи. Логи это исключительно информация которая нужна в случае когда что-то идет не так. Вывод в консоль, когда мы говорим про CLI, это уже интерфейс программы. В программах с GUI такой путаницы не возникает, ведь в этом случае интерфейс это то, что мы рисуем, а логи сокрыты внутри.
В GUI прогах мы много времени тратим на то, чтобы сделать интерфейс минималистичным и удобным. Не показываем пользователю лишнюю инфу и не грузим его (китайские приложения не в счет). Когда же речь идет про CLI мы на это правило забиваем и фигачим в консоль все подряд и логи и результат.
Вот например когда Gradle ничего не делает, он все равно выдает портянку того, какие этапы он там проходит. С одной стороны хорошо, сразу все видно, но с другой стороны да всем похеру на то, что он там выводит, нас интересует только конечный результат. Мы смотрим в список задач только если что-то пошло не так или мы хотим оптимизировать сборку, да и для этого мы тоже забиваем на консоль и запускаем scan
.
По-хорошему, хотелось бы, чтобы если Gradle нечего делать, он бы так и выдавал одну строку: "No task to do". Я пока писал этот пост, думал найти больше примеров CLI программ, в которых эти ошибки допущены, но прикол в том, что большинство популярных прог как раз таки имеют грамотный интерфейс и не выводят лишней инфы. Проблемы возникают только с системами сборки вроде Gradle и Maven, а также во внутренних тулзах которые делаются на коленке.
Вывод тут такой, просто когда вы решили сделать какой-то интерфейс автоматизации, рассматривайте логирование отдельно от вывода в консоль, другими словами думайте о программе как о приложении с интерфейсом, и не грузите пользователя инфой.
BY Dev Easy Notes
Share with your friend now:
tgoop.com/dev_easy_notes/303