Android Studio でのログ出力.
任意の文字列を出力する場合は,
Log.d("TEST", "テスト")
と書いておくと,
となります.
Kotlin では,
println("TEST テスト")
と書いてあげると,
となります.
以下のような文字列にすると,
println("TEST https://google.com/")
println("TEST (MainActivity.kt:100)")
と表示されて,
それぞれブラウザの該当ページや,
該当ファイルの該当行に直接クリックで遷移できるようになります.
ここで,
Exception().stackTrace[1]
を使うと, 記述した位置の該当ファイル名と行数が取得できるので,
インラインなユーテリティにします.
class LogUtils {
companion object {
private const val TAG : String = "TEST"
@JvmStatic fun d(message: String) = Log.d(TAG, appendFileLine(message))
@JvmStatic fun d(message: String, t: Throwable) = Log.d(TAG, appendFileLine(message), t)
@Suppress("NOTHING_TO_INLINE") // ?
private inline fun appendFileLine(message: String): String {
val frame = Exception().stackTrace[1]
return "$message (${frame.fileName}:${frame.lineNumber})"
}
}
}
あとは, 表示したいメッセージとともにお好みの場所で
LogUtils.d("テスト")
と書いておけば,
となって便利にデバッグに使えたり.