it-swarm.com.de

Kotlin Android Print auf der Konsole

Ich muss etwas Str auf Konsole (Android Studio) mit Kotlin ..__ drucken. Ich habe versucht:

Log.v() 
Log.d() 
Log.i() 
Log.w() 
Log.e() 

methoden. Aber es scheint nur auf Java zu funktionieren. Was soll ich zum Drucken mit Kotlin verwenden? Danke

18
Pavel Bredelev

Es gibt mehrere Möglichkeiten.

Sie können beispielsweise Log.d("TAG", "message"); verwenden, müssen jedoch zuerst Log importieren.

import Android.util.Log

{...}

Log.d("TAG", "message")

{...}

Quelle: https://developer.Android.com/reference/Android/util/Log.html

Sie können auch die print und println Funktion von kotlin verwenden.

Beispiel:

{...}

print("message")

println("other message")

{...}

Quelle: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/

28
Ramalus

androidKotlin ist veraltet und verwendet stattdessen 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
    }
}
4
Ye Lin Aung

Ich habe einige Erweiterungsfunktionen geschrieben, die umgearbeitete Typparameter verwenden, um die Deklaration von Log-Tags in allen Projektklassen zu vermeiden. Die Grundidee zeigt der folgende Ausschnitt:

inline fun <reified T> T.logi(message: String) = Log.i(T::class.Java.simpleName, message)

Grundsätzlich können Sie mit dem folgenden Aufruf (ohne externe Abhängigkeiten) etwas im Logcat protokollieren:

logi("My log message")

Sie finden einen Gist hier . Die im Gist deklarierten Funktionen sind etwas ausführlicher, da sie Folgendes zulassen:

  • Faule Bewertung der Zeichenfolge, die abgemeldet werden soll (wenn die Zeichenfolge beispielsweise generiert werden muss) 
  • Protokollierung nur im Debug-Modus 
  • Verwenden Sie einen angegebenen Klassennamen, wenn Sie sich aus einer anonymen Klasse ohne Namen protokollieren müssen
3
Paolo

Sie können dazu Anko library verwenden. Sie hätten den Code wie folgt:

class MyActivity : Activity(), AnkoLogger {
    private fun someMethod() {
        info("This is my first app and it's awesome")
        debug(1234) 
        warn("Warning")
    }
}

oder Sie können auch diese kleine in der Kotlin-Bibliothek geschriebene StaticLog verwenden, dann würde Ihr Code folgendermaßen aussehen:

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")\

Die zweite Lösung ist möglicherweise besser, wenn Sie ein Ausgabeformat für die Protokollierungsmethode definieren möchten:

Log.newFormat {
    line(date("yyyy-MM-dd HH:mm:ss"), space, level, text("/"), tag, space(2), message, space(2), occurrence)
}

oder verwenden Sie Filter, zum Beispiel:

Log.filterTag = "filterTag"
Log.info("This log will be filtered out", "otherTag")
Log.info("This log has the right tag", "filterTag")

Wenn Sie die Timber-Protokollierungsbibliothek von Jake Wharton bereits verwendet haben, überprüfen Sie dieses Projekt: https://github.com/ajalt/timberkt .

Überprüfen Sie auch: Protokollierung in Kotlin und Android: AnkoLogger vs kotlin-logging

Ich hoffe es wird helfen

1
piotrek1543

in diesem Moment (Android Studio 2.3.3 mit Kotlin-Plugin) funktioniert Log.i (TAG, "Hello World") einfach. Es wird Android.util.Log importieren 

1
Pedro Gonzalez