Logback: записывать прогресс в одну строку
У меня есть приложение, которое занимает некоторое время для выполнения обновления. Инженеры службы поддержки могут следить за прогрессом, регулярно просматривая файл журнала. Это низкотехнологичное решение, но оно работает для нашей службы поддержки.
Они увидят что-то вроде этого в файле журнала:
2013-10-22 - Upgrade progress: x
Через 10 секунд та же самая строка теперь: (не новая строка)
2013-10-22 - Upgrade progress: xxx
После обновления:
2013-10-22 - Upgrade progress: xxxxxxxxxxxxxxxxxxx - Finished
Это возможно с logback?
2 ответа
Честно говоря, мне не ясно, какова будет ценность изменения записи в журнале. Я бы предположил, что было бы гораздо более полезно поддержать инженеров, чтобы иметь текущий журнал процента выполнения в определенный момент времени.
Например:
2014-01-01 10:10:10 - INFO - Upgrade progress: 1%
2014-01-01 10:10:15 - INFO - Upgrade progress: 5%
2014-01-01 10:10:20 - WARN - Upgrade encountered missed dependency, correcting
2014-01-01 10:10:21 - INFO - Upgrade dependency resolved
2014-01-01 10:10:25 - INFO - Upgrade progress: 10%
...
2014-01-01 10:12:51 - INFO - Upgrade progress: 100% - Finished
Таким образом, инженер поддержки получает как полезные указания о текущем прогрессе, так и о том, что прогресс будет сочетаться с важными уведомлениями или другими признаками фактической работы, выполняемой процессом.
Что касается конкретного вопроса под рукой, я не знаю способа сделать это без серьезной настройки функций logback - он предназначен для создания текущего журнала добавленных записей, а не для изменения существующих. Это совершенно полностью противоречит принципу логбэка или какой-либо инфраструктуры логирования на основе приложений.
Я полагаю, что теоретически можно было бы сделать что-то подобное путем реализации пользовательского приложения (см. http://logback.qos.ch/manual/appenders.html), но на самом деле это не то, для чего ведение журнала и, следовательно, это, безусловно, не так. Часть стандартной реализации logback.