LoginSignup
8
9

More than 5 years have passed since last update.

Androidでログ出力を簡潔にしたい

Last updated at Posted at 2017-09-15

AndroidでLog.d(TAG, "some log text...")という書き方でログを出力することができますが、毎回TAG変数を宣言するのがめんどくさかったので、呼び出し元に応じて自動的にファイル名や行番号を取得してTAGを設定してくれたら便利なのになーと思っていました。できました。テキトーにクラスを作り、以下のようなメソッドを作成します。仮にLoggerクラスとしましょう。

Logger.java
public class Logger {
  public static void log(String text) {
    StackTraceElement elem = Thread.currentThread().getStackTrace()[2];
    String tag = elem.getFileName();
    Log.d(tag, text);
  }
}

そして、ログを吐き出したいところでこのメソッドを呼びます。

Logger.log("hello world");
出力例
09-15 19:52:03.270 15378-15378/com.niusounds.myapps D/MainActivity.java: hello world

かんたん!!

ちなみに同じコードをKotlinから呼び出したら違う結果になりました。Kotlinの場合はThread.currentThread().stackTrace[3]を取得しないといけないようです。

Log.kt
fun log(text: String) {
    val caller = Thread.currentThread().stackTrace[3]
    val tag = "${caller.fileName}:${caller.lineNumber}"
    Log.d(tag, text)
}
8
9
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
8
9