2013-08-19 3 views
6

У меня есть консольное приложение , которое выводит его вывод с помощью Log4J. Это полезно, поскольку я могу легко реализовать коммутатор, чтобы дополнительно отображать отладочные сообщения, даже если они по умолчанию скрыты.Панель выполнения на консоли с использованием Log4J или LogBack

Это приложение имеет некоторые длительные действия, для которых бар прогресс было бы уместно.

Что такое лучший способ реализовать это, используя Log4J или LogBack?

+0

Я не понимаю вопроса. Как бы вы отображали индикатор выполнения в записи журнала? Если вы уже знаете прогресс, почему бы не напечатать xx%? – ChrisM

ответ

3

Чтобы написать индикатор выполнения или любой текст для обновления на консоль, просто завершите вывод с помощью \r (возврат каретки) вместо \n (новая строка), чтобы следующая строка перезаписывала его. Это question более подробно. Библиотека F-ANSI позволяет легко генерировать приятный внешний вид консоли, включая перезапись предыдущей строки.

Но если вы настроены на использование рамки ведения журнала, это не только невозможно, но и не то, что вы хотите. Как подсказывает ChrisM, правильный путь к log Прогресс заключается в том, чтобы каждый раз регистрировать новую строку с процентом, сделанным до сих пор. Таким образом, вы можете видеть, что делает ваша программа и насколько далеко она находится в контексте.

Похоже, что вы хотите сделать это, это отделить ваше ведение журнала от фактического вывода вашей программы (это вообще хорошая идея, даже не учитывая проблему с индикатором выполнения). Используйте свою структуру ведения журнала для регистрации информации о выполнении программы; вещи, которые вас или кто-то отлаживает. Вывод фактической программы должен быть записан непосредственно на stdout через System.out.

Затем вы можете самостоятельно решить, что вы хотите делать с ведением журнала. Его также можно записать в stdout, и ваши журналы и выходные данные могут жить вместе, но лучше было бы написать stderr (что упрощает перенаправление) или в файл журнала (что делает вашу программу более чистой и сохраняет ваши журналы для справки позже).


Кроме того, если Java не является обязательным условием команды pv обеспечивает мощный, настраиваемый индикатор на основе объеме данных, водопроводных через него.

Смежные вопросы