bouzuya.hatenablog.com

ぼうずやのにっき

Android の Logger ライブラリ Timber をつかう

Android 向けの Logger である Timber を試した。

JakeWharton/timber

Square, Inc. の Jake Wharton さんがつくっている。 Android 関連でよく出てくる名前だなあ。有名な人なんだろうな。

2017-05-22 に出てきた square/picassosquare/retrofit も Square だった。

2017-05-20 に出てきた JakeWharton/butterknife もこの人だった。

さて。 Timber は AndroidLog クラスの上につくられているらしい。機能としては Tree を差し替えることでログの出力方法を変えられることと String.format を内蔵していること。

標準の DebugTree だと TAG を自動で設定してくれる。↓のような定型句が AndroidLog にはある。書けばいいのだけど、面倒だ。

private static final String TAG = MainActivity.class.getSimpleName();
// ...
    Log.d(TAG, "foo");

Timber だと↓のように、それがなくなる。

    Timber.d("foo");

String.format に対応しているので、↓のような埋め込みもしやすい。

    Timber.d("(%dms)", ms);

全体での On/Off は Application クラスで Timber.plant() するかで決まる。 plant で好きな Tree を設定するだけ。

public class MyApplication extends Application {
    @Override public void onCreate() {
        super.onCreate();
        if (BuildConfig.DEBUG) {
            Timber.plant(new DebugTree());
        }
    }
}

Tree を継承したクラスも定義できる。↓のような記事もある。

ほかにも紹介記事。

追記: 2017-06-08 に補足で Android Studio で Live Templates を設定して Log と同様に補完を効かせる方法について書いた。