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