custom - Kotlin Android imprime a consola
ratingbar android color (5)
Necesito imprimir algunos str para consola (Android Studio) usando Kotlin. He intentado el
Log.v()
Log.d()
Log.i()
Log.w()
Log.e()
metodos Pero parece funcionar solo en Java. ¿Qué debo usar para imprimir utilizando Kotlin? Gracias
Hay un par de maneras.
Puede usar Log.d("TAG", "message");
por ejemplo, pero primero necesitas importar Log .
import android.util.Log
{...}
Log.d("TAG", "message")
{...}
Fuente: https://developer.android.com/reference/android/util/Log.html
También puede utilizar la función de impresión e impresión de kotlin .
Ejemplo:
{...}
print("message")
println("other message")
{...}
Fuente: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/
He escrito algunas funciones de extensión que utilizan parámetros de tipo reificado para evitar tratar con declarar etiquetas de registro en todas las clases del proyecto. La idea básica se muestra en el siguiente fragmento de código:
inline fun <reified T> T.logi(message: String) = Log.i(T::class.java.simpleName, message)
Básicamente, puede registrar algo en el logcat con la siguiente invocación (W / O dependencias externas):
logi("My log message")
Puedes encontrar una idea here . Las funciones declaradas en la esencia son un poco más elaboradas ya que permiten:
- Evaluación perezosa de la cadena que se cerrará (si, por ejemplo, la cadena debe generarse de alguna manera)
- Registro solo cuando está en modo de depuración por defecto
- Use un nombre de clase dado cuando necesite iniciar sesión desde una clase anónima que no tenga nombre
Puedes usar la biblioteca de Anko
para hacerlo. Tendrías un código como el siguiente:
class MyActivity : Activity(), AnkoLogger {
private fun someMethod() {
info("This is my first app and it''s awesome")
debug(1234)
warn("Warning")
}
}
o también puede usar esta pequeña biblioteca escrita en Kotlin llamada StaticLog
entonces su código se vería así:
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")/
La segunda solución podría mejorar si desea definir un formato de salida para el método de registro como:
Log.newFormat {
line(date("yyyy-MM-dd HH:mm:ss"), space, level, text("/"), tag, space(2), message, space(2), occurrence)
}
o utilizar filtros, por ejemplo:
Log.filterTag = "filterTag"
Log.info("This log will be filtered out", "otherTag")
Log.info("This log has the right tag", "filterTag")
Si ya usó la biblioteca de registro de Timber
Jake Wharton, verifique este proyecto: https://github.com/ajalt/timberkt .
Compruebe también: Inicio de sesión en Kotlin y Android: AnkoLogger vs kotlin-logging
Espero que ayude
androidKotlin está en desuso y utiliza Anko lugar.
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
}
}
en este momento (android studio 2.3.3 con el plugin kotlin), Log.i (TAG, "Hello World") simplemente funciona. Se importará android.util.Log