Timber は、かの Jake Wharton 氏が開発したログ用のライブラリです。
プロジェクトへの導入は Android Studio ベースのプロジェクトであれば簡単です。
dependencies {
compile 'com.jakewharton.timber:timber:3.1.0'
}
最新バージョンは執筆時点で
4.1.0
ですが、プロジェクトのminSdkVersion
が 15 以上でないとエラーとなる(勘違いかもしれない)なので、私のプロジェクトでは3.1.0
を使っています。
次のようなコードで感じでログ出力ができます。
Timber.tag("hoge").i("piyo=%s", "fuga");
%s
%d
等が利用できる。それ以外に便利な点としてはTree
によりログの挙動を変えたりカスタマイズできる点なのですが、それは今回は置いておきます。
本題の表題の件ですが、ログ出力を仕込む場合、debug ビルド時のみ出力することが多いと思います。その場合、コードは次のようになり、
if (BuildConfig.DEBUG) {
Log.i("hoge", "piyo=fuga");
}
至るところに判定がはいると煩雑になってしまいます。また if
判定せず気軽にログ出力していたら、コードを消し忘れて release ビルドに残ってしまったり。
もしくは独自のログ用クラスを作る、となるのですが、Timber で debug ビルド時のみに Tree
の設定をするという風にすると(release ビルド時は Tree
の設定を何もしない)、
if (BuildConfig.DEBUG) {
Timber.plant(new Timber.DebugTree());
}
例え Timber.tag("hoge").i("piyo=%s", "fuga");
というメソッドが release ビルド時に残っていても、ログ出力されない、という状態が実現できます。エラーにもなりません。
以上、簡単ですが共有でした^^;