1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TimberでJetpack Composeのログを良い感じに。

Last updated at Posted at 2022-01-15

はじめに

こんにちは。
今日はJetpack Composeのログについて書こうと思います。Viewを使用していた時はピュアなandroid.utilで事足りていましたが、Jetpack Composeでは基本Composable関数単位でログのタグを出力したいと思い調べてみました。

約二年Androidエンジニアをしていますが、Timber初めて使ってみました。ふふふ。

どうするの?

Timberというログ出力ライブラリを使用します。実際はandroid.utilをラップした軽量のライブラリだそうです。Timberについて詳しく知りたい人はこちらを覗いてみてください。

やることは以下です。

  1. Timber.DebugTreeを継承したクラスを作り、自分好みにカスタマイズ!

  2. Applicationクラスにて(1)で作成したクラスを初期化する。

  3. Timber.DebugTreeを継承したクラスを作り、自分好みにカスタマイズ!

TimberSetting.kt
class TimberSetting(
    private val context: Context
): Timber.DebugTree() {
    // 引数のtagはcreateStacElementTagで作成したもの
    // ユニークなTAGを入れておくと、自アプリのログだけでfileterできる。
    override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
        super.log(priority, "YOUR_UNIQUE_TAG" + tag, message, t)
    }
    // TAGを生成する。引数のelementからファイル名や行数などを取得できる。
    override fun createStackElementTag(element: StackTraceElement): String {
        return String.format(" [C:%s] [L:%s] [M:%s]",
            super.createStackElementTag(element),
            element.lineNumber,
            element.methodName)
    }

}
  1. Applicationクラスにて(1)で作成したクラスを初期化する。
MyApplication
// AndoridManifest.xmlへの追加を忘れずに!
class MyApplication: Application() {
    override fun onCreate() {
        super.onCreate()
        if (BuildConfig.DEBUG) {
            Timber.plant(TimberSetting(this))
        }
    }
}

以上の実装で以下のようなログが出力されます。

MainActivity
@Composable
fun Main() {
    Timber.i("Main Composable!") //20行目
}
I/YOUR_UNIQUE_TAG [C:MainActivityKt] [L:20] [M:Main]: Main Composable!

さいごに

Jetpack ComposeでTimberを使ってみました。いや、これJetpack Composeじゃなくても良かったじゃん。とはいえメソッド名出せるの良いですね。もっと前から使っておけば良かった~。
以上です。それではまた次の記事で!

参考

[stack overflowの質問](Log method name and line number in Timber)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?