Logを使っていたらTimberを使えって警告が出たのでログ出力にはTimberを使おう

Android Studio 3.0.1でLogを使ってログ出力していたら「Timberを使え」って警告が出てきました。

Timberって何?という方のために、Timberの使い方を簡単にまとめておきます。Kotlinを使います。

Timber is 何?

Timberは、Androidで使えるOSSのライブラリです。主にログ出力を担当してくれます。「神」ことJake Wharton氏が主に開発に携わっています。

何が便利かというと、デバッグの時のみログを出力する、というような設定をしてあげることで、条件分岐を作ったり、ログ出力のコードを削ったりしなくても、デバッグの時のみログを出力してくれることです。

Timberの簡単な使い方

Timberの導入

Timberをプロジェクトに導入するには、Module: appのbuild.gradleのdependenciesにTimberを追加します。Android Studio 2系の場合はimplementationではなくcompileでしょうか。

dependencies {
    implementation 'com.jakewharton.timber:timber:4.6.0'
}

ApplicationクラスでTimberを初期化

次にApplicationクラスの子クラスを作って、Android Manifestファイルのapplicatioinに追加します。これを忘れると初期化処理が呼ばれないので忘れないようにします。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jp.rocketapps.timber">

    <application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

onCreateの中で、Timberを「植えて」あげれば準備は完了(「timber」とは木材の意味。洒落てますね)。BuildConfig.Debugの時のみ植えることで、デバッグの時のみログ出力することができます。

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        if (BuildConfig.DEBUG) {
            Timber.plant(Timber.DebugTree())
        }
    }
}

Timberを使う

準備が整いました。早速Timberを使ってみます。Log.dに相当するものは、TimberではTimber.dです。タグは指定しなくても、「MainActivity」というようにクラス名でタグ付けしてくれます。

Timber.d("Hello Timber!")

tag()を使うことで、自分でタグ付けすることもできます。

Timber.tag("TAG").d("tag")

たったこれだけで、デバッグ時にのみログを出力してくれるようになります。Timber、便利ですね。

茨城県つくば市在住のイケてるメンズです。東京工業大学卒業後、コンサルタントを経て、2016年よりモバイルアプリ(主にAndroid)のエンジニアとして働いています。2017年UI DesignコンテストAndroid部門特別賞受賞。

ご連絡はメールフォームからお願いします。