web-dev-qa-db-ja.com

Kotlin Androidコンソールに出力

Kotlinを使用してコンソール(Android Studio)にstrを印刷する必要があります。私は試しました:

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

メソッド。ただし、Javaでのみ機能するようです。 Kotlinを使用して印刷するには何を使用すればよいですか?ありがとう

18
Pavel Bredelev

いくつかの方法があります。

たとえばLog.d("TAG", "message");を使用できますが、最初にインポートする必要がありますLog

import Android.util.Log

{...}

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

{...}

ソース: https://developer.Android.com/reference/Android/util/Log.html

kotlinのprintおよびprintln関数も使用できます。

例:

{...}

print("message")

println("other message")

{...}

ソース: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/

28
Ramalus

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
    }
}
4
Ye Lin Aung

すべてのプロジェクトのクラスでログタグを宣言することを避けるために、具体化された型パラメーターを使用する拡張関数をいくつか作成しました。基本的な考え方は、次のスニペットに示されています。

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

基本的に、次の呼び出し(W/O外部依存関係)でlogcatに何かを記録できます。

logi("My log message")

Gist here を見つけることができます。 Gistで宣言された関数は、許可されている場合、もう少し詳しく説明します。

  • ログアウトする文字列の遅延評価(たとえば、文字列を何らかの方法で生成する必要がある場合)
  • デフォルトでデバッグモードの場合のみロギング
  • 名前のない匿名クラス内からログインする必要がある場合は、指定されたクラス名を使用します
3
Paolo

Anko libraryを使用して実行できます。次のようなコードがあります:

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

または、 StaticLog と呼ばれるKotlinライブラリで書かれたこの小さなコードを使用することもできます。コードは次のようになります。

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

2番目の解決策は、次のようなロギングメソッドの出力形式を定義する場合に適しています。

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

それが役立つことを願っています

1
piotrek1543

この時点で(kotlinプラグインを使用したAndroid studio 2.3.3)、Log.i(TAG、「Hello World」)が機能します。 Android.util.Logをインポートします

1
Pedro Gonzalez