logdog - a colorized Android logcat

Sometimes I do Android development. I never liked using debuggers, neither I use IDE. So my choice is to write Android apps with Vim+Terminal. With the lack of debugger I have to use logcat frequently, and using plain adb logcat (even with grepping output) is far from being pleasant.

Then I found there are nicer alternatives, like coloredlogcat or proclogcat. I tried them, but they lacked other output formats, like “time”. So I started writing my own one, which I successfully use in the last few months. It’s written in Python and seems to be the smallest logcat post-processor (it’s only about 100 LOC in a single file).

It supports “brief”, “time” and “raw” output formats and allows to filter output by one or several applications.

Here are some usage samples:

Show messages from phone app with timestamps:
$ logdog -v time com.andorid.phone

Show messages from app1 and app2:
$ logdog com.example.app1 com.example.app2

Show messages from all apps in raw format:
$ logdog -v raw

I also use bash/zsh snippets to autocomplete android process names:

# .zshrc
_logdog() {
    local tag="${words[$CURRENT]}"
    compadd $(adb shell ps | tr -d '\r' | awk -v tag=" $tag" '$0 ~ tag { print $9 }')
compdef _logdog logdog

# .bashrc
_logdog() {
    local tag=${COMP_WORDS[COMP_CWORD]}
    procs="$(adb shell pm list packages $tag | sed -e 's/package://')"
    COMPREPLY=($(compgen -W "$procs" -- $tag))
complete -o default -o nospace -F _logdog logdog

And here’s how logdog looks in my terminal:


You can download logdog on the bitbucket page. Open source, MIT-licensed, as usual.

I hope you’ve enjoyed this article. You can follow – and contribute to – on Github, Twitter or subscribe via rss.

May 20, 2013