Kotlin Android-Druck auf Konsole

Lesezeit: 4 Minuten

Benutzer-Avatar
Pawel Bredelew

Ich muss mit Kotlin einige str auf die Konsole (Android Studio) drucken. Ich habe das versucht:

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

Methoden. Aber es scheint nur auf Java zu funktionieren. Was sollte ich verwenden, um mit Kotlin zu drucken? Vielen Dank

  • Alle Java-Methoden funktionieren auch mit Kotlin. Was genau meinst du mit “scheint zu funktionieren”?

    – Junge

    22. Juli 2016 um 11:47 Uhr

  • Übrigens: Sie können die Protokollvorlagen verwenden, um den Code in Java zu generieren und ihn automatisch nach Kotlin zu konvertieren, indem Sie ihn kopieren und in eine Kotlin-Datei einfügen. Oder Sie können die Protokollvorlagen in Kotlin verfügbar machen, indem Sie den Kotlin-Port aus importieren dieses Github-Repo direkt. Importieren Sie einfach die .jar-Datei über ‘Datei > Einstellungen importieren…’.

    – Tobias Uhmann

    12. Mai 2018 um 9:49 Uhr

Es gibt ein paar Möglichkeiten.

Sie können verwenden Log.d("TAG", "message"); zum Beispiel, aber zuerst müssen Sie importieren Protokoll.

import android.util.Log

{...}

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

{...}

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

Du kannst auch Kotlins verwenden drucken und println Funktion.

Beispiel:

{...}

print("message")

println("other message")

{...}

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

  • Die Funktionen print und println von Kotlin drucken nicht in das Android-Protokoll.

    – Junge

    22. Juli 2016 um 11:54 Uhr

  • Richtig, sie drucken auf die Standardausgabe, wie in den Dokumenten angegeben, die ich als Quelle eingerichtet habe. Aber die Frage bezog sich tatsächlich auf das Drucken auf die Konsole, nicht unbedingt auf das Android-Protokoll. Ich denke es passt noch =)

    – ronniemagatti

    22. Juli 2016 um 11:57 Uhr

  • @Ramalus Die ursprüngliche Frage hatte eine Android -Tag, aber es ist gut, beide einzuschließen, nehme ich an.

    – WSBT

    13. Oktober 2018 um 4:26 Uhr

  • Verwenden Log.d(TAG, message) ist etwas nervig. github.com/JakeWharton/timber macht es leichter.

    – Ben Butterworth

    2. November 2020 um 11:54 Uhr

Benutzer-Avatar
Paolo

Ich habe einige Erweiterungsfunktionen geschrieben, die verifizierte Typparameter verwenden, um zu vermeiden, dass in allen Klassen des Projekts Protokolltags deklariert werden müssen. Die Grundidee zeigt das folgende Snippet:

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

Grundsätzlich können Sie mit folgendem Aufruf (OHNE externe Abhängigkeiten) etwas in den Logcat protokollieren:

logi("My log message")

Sie können ein Wesentliches finden hier. Die im Kern deklarierten Funktionen sind etwas ausführlicher, da sie Folgendes zulassen:

  • Verzögerte Auswertung des auszuloggenden Strings (wenn zum Beispiel der String irgendwie generiert werden muss)
  • Protokollierung nur im Debug-Modus standardmäßig
  • Verwenden Sie einen bestimmten Klassennamen, wenn Sie sich innerhalb einer anonymen Klasse anmelden müssen, die keinen Namen hat

  • Interessante Lösung. Ich weiß nicht, dass Sie eine dynamische Klassenmethode so definieren können.

    – Chen Li Yong

    17. Mai 2020 um 7:26 Uhr

Benutzer-Avatar
Ye Lin Aung

androidKotlin ist veraltet und wird verwendet Anko stattdessen.

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
    }
}

  • Wie in der README-Datei der verlinkten Bibliothek angegeben, ist sie veraltet. Anko sollte stattdessen verwendet werden.

    – Junge

    22. Juli 2016 um 11:48 Uhr

  • Ich fürchte, ich habe diesen Teil nicht bemerkt. Ich werde die Antwort aktualisieren

    – Ye Lin Aung

    22. Juli 2016 um 12:01 Uhr

  • >Anko ist veraltet. Weitere Informationen finden Sie auf dieser Seite. github.com/Kotlin/anko/blob/master/GOODBYE.md

    – Jack

    16. September 2020 um 13:46 Uhr

Benutzer-Avatar
Pedro Gonzales

In diesem Moment (Android Studio 2.3.3 mit Kotlin-Plugin),

Log.i(TAG, "Hello World")

Funktioniert einfach. Es wird importiert android.util.Log

Benutzer-Avatar
piotrek1543

Sie können verwenden Anko Bibliothek dazu. Sie hätten 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 Kotlin geschriebene Bibliothek namens verwenden StaticLog dann würde dein Code so 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 wie folgt definieren möchten:

Log.newFormat {
    line(date("yyyy-MM-dd HH:mm:ss"), space, level, text("https://stackoverflow.com/"), 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 bereits Jake Wharton’s verwendet haben Timber Protokollierungsbibliothek überprüfen Sie dieses Projekt: https://github.com/ajalt/timberkt.

Überprüfen Sie auch: Anmelden bei Kotlin & Android: AnkoLogger vs. Kotlin-Logging

Hoffe es wird helfen

Benutzer-Avatar
β.εηοιτ.βε

Zum Beispiel:

Log.i("info message")
Log.d("debug message")
Log.w("warning message","warningOutPut")
Log.e("error message","AndACustomTag",exception)

Sie können sie auch mit Kotlin schreiben.

1228490cookie-checkKotlin Android-Druck auf Konsole

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy