Android
 Computer >> コンピューター >  >> プログラミング >> Android

Androidアプリ開発でTimberライブラリを使ってロギングを強化する方法


Timberは、Android標準のLogクラスを拡張したロギングライブラリです。Androidアプリを開発する際、多くの開発者が標準のAndroid Logを使用しますが、リリースビルド時にデバッグログがそのまま出力されてしまうなど、ログ管理の面で課題があります。そこで役立つのがTimberです。Timberを活用すれば、ビルドタイプに応じたログの出し分けが簡単に行え、コードもすっきりと保てます。

本記事では、AndroidプロジェクトにTimberを統合する具体的な手順を解説します。

ステップ1:新規プロジェクトの作成

Android Studioを開き、「File」→「New Project」を選択して、必要な情報を入力し、新しいプロジェクトを作成します。

ステップ2:build.gradleにTimberを追加

次のように、build.gradleのdependenciesにTimberライブラリを追加します。

apply plugin: 'com.android.application'
android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.andy.myapplication"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    implementation 'com.jakewharton.timber:timber:4.7.1'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

ステップ3:MainActivityでTimberを初期化

Timberは、使用前に必ず初期化(plant)しておく必要があります。以下のように、MainActivityのonCreateメソッド内でDebugTreeを登録します。

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import timber.log.Timber;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (BuildConfig.DEBUG) {
            Timber.plant(new Timber.DebugTree());
        }
    }
}

このようにBuildConfig.DEBUGで判定することで、デバッグビルド時のみログが出力されるようになります。

ステップ4:Timberの各種ログメソッド

Timberには、Logcatと同様に目的別のログメソッドが用意されています。主なメソッドは以下の通りです。

Timber.v("Some Text"); // 詳細(VERBOSE)ログ
Timber.d("Some Text "); // デバッグ(DEBUG)ログ
Timber.i("Some Text "); // 情報(INFO)ログ
Timber.w("Some Text "); // 警告(WARN)ログ
Timber.e("Some Text "); // エラー(ERROR)ログ

ステップ5:Timberの実装例

以下は、デバッグビルドとリリースビルドで異なるTreeを登録する実践的なサンプルコードです。

package com.example.andy.myapplication;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import timber.log.Timber;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (BuildConfig.DEBUG) {
            Timber.plant(new Timber.DebugTree());
        } else {
            Timber.plant(new ReleaseTree());
        }
        Timber.v("Some Text");
        Timber.d("Some Text ");
        Timber.i("Some Text ");
        Timber.w("Some Text ");
        Timber.e("Some Text ");
    }
}

この例では、デバッグ時にはDebugTreeを、リリース時には独自に定義したReleaseTreeを登録しています。ReleaseTreeを実装すれば、クラッシュレポートツールへのログ送信など、リリース環境に合わせた柔軟なログ処理が可能になります。

ステップ6:レイアウト・マニフェストは変更不要

上記の例では、レイアウトファイルやAndroidManifest.xmlには一切変更を加えていません。Timberの導入は非常にシンプルで、既存プロジェクトにも最小限の手間で組み込めます。

実行結果

上記のコードを実行すると、Logcatに以下のように各ログレベルのメッセージが出力されます。

Androidアプリ開発でTimberライブラリを使ってロギングを強化する方法

  1. Androidのゲーム体験を劇的に向上させる11の方法【ラグ解消・快適プレイ】

    スマートフォンでのゲームは、世界中の友達とつながりながら時間を楽しく過ごせる素晴らしい手段です。しかし、Android端末では動作が重くなったり、ラグが発生したりすることで、せっかくのゲーム体験が台無しになってしまうこともあります。本記事では、Androidのゲームパフォーマンスを最大限に引き出すための具体的な方法を11個ご紹介します。 Androidでゲーム体験を向上させる方法 1. キャッシュデータを削除する キャッシュデータとは、Webサイトやアプリにアクセスした際にスマートフォンが一時的に保存する情報のことです。多くの場合、必須ではないデータでありながらストレージ容量を消費し、端末の動

  2. Androidで友人と位置情報を共有する7つの方法【Googleマップ・WhatsAppなど】

    GPS技術はここ数十年で大きく進化し、今ではAndroidスマートフォンでも手軽に利用できるようになりました。複数のアプリが正確な現在地を特定でき、中でも最も広く使われているのがGoogleマップです。これらのアプリを使えば、自分の現在地を確認したりナビゲーションしたりするだけでなく、その位置情報を友人と共有することも可能です。位置情報を直接共有することは、自分の正確な居場所を伝えるための非常に便利な手段です。「今どこにいるのか」「家への道順」などを口頭で説明しても、なかなか上手く伝わらないことはよくありますよね。実は、この便利な機能はいつでも指先で使えるのに、その存在を忘れている人が多いので