Kotlin Android для печати на консоль
Мне нужно распечатать некоторую строку для консоли (Android Studio) с помощью Kotlin. Я пробовал:
Log.v()
Log.d()
Log.i()
Log.w()
Log.e()
методы. Но, похоже, это работает только на Java. Что я должен использовать для печати с помощью Kotlin? благодаря
Ответы
Ответ 1
Есть несколько способов.
Вы можете использовать Log.d("TAG", "message");
например, но сначала вам нужно импортировать журнал.
import android.util.Log
{...}
Log.d("TAG", "message")
{...}
Источник: https://developer.android.com/reference/android/util/Log.html
Вы также можете использовать функцию печати и печати kotlin.
Пример:
{...}
print("message")
println("other message")
{...}
Источник: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/
Ответ 2
androidKotlin устарел и вместо этого использует Anko.
https://github.com/Kotlin/anko/wiki/Anko-Commons-%E2%80%93-Logging
class SomeActivity : Activity(), AnkoLogger {
private fun someMethod() {
info("London is the capital of Great Britain")
debug(5) // .toString() method will be executed
warn(null) // "null" will be printed
}
}
Ответ 3
Я написал некоторые функции расширения, которые используют параметры типа reified, чтобы избежать обращения с объявлением тегов журналов во всех классах проекта. Основная идея показана следующим фрагментом:
inline fun <reified T> T.logi(message: String) = Log.i(T::class.java.simpleName, message)
В принципе, вы можете записать что-то в logcat со следующим вызовом (W/O внешние зависимости):
logi("My log message")
Вы можете найти суть здесь. Функции, объявленные в основе, немного более подробно описаны, учитывая, что они позволяют:
- Ленивая оценка строки, которая должна быть выведена из системы (если, например, строка должна быть сгенерирована каким-то образом)
- Регистрация только в режиме отладки по умолчанию
- Используйте заданное имя класса, когда вам нужно войти в анонимный класс, который не имеет имени
Ответ 4
Вы можете использовать библиотеку Anko
для этого. У вас будет код, как показано ниже:
class MyActivity : Activity(), AnkoLogger {
private fun someMethod() {
info("This is my first app and it awesome")
debug(1234)
warn("Warning")
}
}
или вы также можете использовать эту маленькую написанную в библиотеке Kotlin под названием StaticLog
тогда ваш код будет выглядеть так:
Log.info("This is an info message")
Log.debug("This is a debug message")
Log.warn("This is a warning message","WithACustomTag")
Log.error("This is an error message with an additional Exception for output", "AndACustomTag", exception )
Log.logLevel = LogLevel.WARN
Log.info("This message will not be shown")\
Второе решение может быть лучше, если вы хотите определить формат вывода для метода ведения журнала, например:
Log.newFormat {
line(date("yyyy-MM-dd HH:mm:ss"), space, level, text("/"), tag, space(2), message, space(2), occurrence)
}
или использовать фильтры, например:
Log.filterTag = "filterTag"
Log.info("This log will be filtered out", "otherTag")
Log.info("This log has the right tag", "filterTag")
Если вы уже использовали библиотеку журналов Jake Wharton Timber
проверьте этот проект: https://github.com/ajalt/timberkt.
Проверьте также: Регистрация в Kotlin & Android: AnkoLogger vs kotlin-logging
Надеюсь, это поможет
Ответ 5
На данный момент (Android 2.3.3 с плагином Kotlin),
Log.i(TAG, "Hello World")
Просто работает. Это будет импортировать android.util.Log