Logcat vs Logdog или снятся ли андроидам цветные логи?

Когда разрабатываешь под Android в терминале и виме, и когда не пользуешься отладчиками — логи становятся твоим основным подспорьем. И долгие годы я смотрел в черно-белую скуку стандартного adb logcat. Конечно, использовал grep, чтобы отфильтровать только нужные логи, конечно использовал встроенные средства фильтрации, конечно использовал различные форматы вывода logcat (time, brief, threadtime, long, …).

Вообще стандартный logcat делает много ненужных вещей, например adb logcat -f перенаправляет вывод в файл (аналогично adb logcat > file), adb logcat -t печатает несколько последних строк (аналогично adb logcat | tail -n ). Еще в стандартном logcat неудобная фильтрация по тегам. Разработчики привыкли использовать разные теги в разных Activity/Services в приложении, поэтому фильтровать по всем тегам приложения сложно и неприятно.

А хотелось иметь возможность получать вывод только твоего приложения (или нескольких приложений), желательно в различных форматах (обычный, с временными отметками, с метками потоков, сокращенный). Так я узнал, что существуют proclogcat для фильтрации вывода по процессам и coloredlogcat для подсветки синтаксиса. И в связке они работают весьма неплохо, пока мне не понадобилось видеть временные отметки в логах. Здесь парсеры этих утилит сломались. Да, существуют и более мощные и навороченные логгеры. Но я пошел своим путем.

Logdog — это один скрипт в одном файле, написанный на python. Позволяет делать всё, о чем я писал выше, поддерживает несколько форматов вывода. Например:

  • logdog com.android.phone — вывести логи телефонного приложения
  • logdog com.android.phone com.android.settings — логи телефона и настроек
  • logdog -v time com.android.phone — логи с метками времени
  • logdog -v time com.android.phone | grep Exception — получить только исключения
  • Исходник можно взять на https://bitbucket.org/zserge/logdog/src
    Там же на bitcbuket в wiki описано как настроить автодополнение имён пакетов для zsh/bash.
    В скрипте чуть больше сотни строк кода и никаких внешних зависимостей, кроме самого adb

    Буду рад, если кому-то такая утилитка поможет.

    Да, кстати, если от пользователей/заказчиков кто-то из вас получает длиннющие логи в текстовых файлах — теперь logdog может разукрасить и отфильтровать такие логи тоже. Так что приятного использования!