ファイル名:行数
を出力すると、Android StudioのLogcatからジャンプすることが可能です。
Timberライブラリを使った、コード例を示します。
Timber.d("message (MediaStoreUtils.kt:125)")
これを実行すると、次のようにLogcatに出力されます。
Android Studioの、Logcatのファイル名の部分がリンク形式になっていることが分かります。
これをクリックすると、コードにジャンプすることが出来ます。
また、このコードのように都度 ファイル名:行数
を書いてもいいのですが、次のように関数にまとめることも出来ます。
fun logd(message: String) {
if (!BuildConfig.DEBUG) return
val stackTrace = Thread.currentThread().getStackTrace()[3]
Timber.d("$message (${stackTrace.fileName}:${stackTrace.lineNumber})")
}
Timber.DebugTreeを使っているのであれば、DebugTreeを拡張しても動きます。
val newMessage
のあたりをプロジェクトに合わせて修正して下さい。
Timber.plant(object : Timber.DebugTree() {
private val fqcnIgnore = listOf(
Timber::class.java.name,
Timber.Forest::class.java.name,
Timber.Tree::class.java.name,
Timber.DebugTree::class.java.name,
)
private val stackTrace: StackTraceElement
get() = Throwable().stackTrace
.filter { it.className !in fqcnIgnore }[2]
override fun log(priority: Int, tag: String?, message: String, t: Throwable?) {
val newMessage = if (priority == Log.DEBUG) {
val stackTrace = stackTrace
"$message (${stackTrace.fileName}:${stackTrace.lineNumber})"
} else {
message
}
super.log(priority, tag, newMessage, t)
}
})
このログどこで出力しているんだっけ、ってなることが多い場合には検討してみて下さい🐱
Top comments (0)