Androidのログに出力を書き込むにはどうすればよいですか?


153

ログにデバッグ出力を書き込んで、logcatで確認したいと思います。

System.outに何かを書き込んだ場合、これはすでにlogcatに表示されています。

ログに書き込み、出力にレベルとタグを追加するためのクリーンな方法は何ですか?

回答:


211

調べてくださいandroid.util.Log。さまざまなログレベルでログに書き込むことができ、さまざまなタグを指定して出力をグループ化できます。例えば

Log.w("myApp", "no network");

タグmyAppとメッセージno networkの警告を出力します。


を使用することで何が違うのでしょうlog.dか?
JMASTER B 2015

5
wLog.w(...)警告を表します。より多くのバージョンがあります:d-デバッグ、e-エラー、i-情報、v-詳細、wtf-なんとひどい失敗。;-)
patryk.beza 2016年

20

LogCatの出力は非常に長くなる場合があるため、タグは出力を簡単に見つけるために使用されます。クラスのどこかで定義できます:

private static final String TAG = "myApp";

デバッグ時に使用します

Log.v(TAG、 "何かした");

ここに画像の説明を入力してください

タグの検索のみにフィルターを適用することもできます。


17

使用android.util.Logし、そこに定義された静的な方法(例えば、e()w())。



5

このようにログを見てください、

Log.e("ApiUrl = ", "MyApiUrl") (error)
Log.w("ApiUrl = ", "MyApiUrl") (warning)
Log.i("ApiUrl = ", "MyApiUrl") (information)
Log.d("ApiUrl = ", "MyApiUrl") (debug)
Log.v("ApiUrl = ", "MyApiUrl") (verbose)

1

RDALoggerというライブラリを使用できます。こちらがgithub linkです。

このライブラリを使用すると、メソッド名/クラス名/行番号とアンカーリンクを使用してメッセージを記録できます。このリンクでは、ログをクリックすると、画面がこのコード行に移動します。

ライブラリを使用するには、以下の実装を行う必要があります。

ルートレベルのGradle

allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }

アプリレベルのGradle

dependencies {
            implementation 'com.github.ardakaplan:RDALogger:1.0.0'
    }

ライブラリを初期化するには、次のように開始する必要があります(Application.classまたは最初の使用前)

RDALogger.start("TAG NAME").enableLogging(true);

そして、あなたが望むものは何でも記録することができます。

    RDALogger.info("info");
    RDALogger.debug("debug");
    RDALogger.verbose("verbose");
    RDALogger.warn("warn");
    RDALogger.error("error");
    RDALogger.error(new Throwable());
    RDALogger.error("error", new Throwable());

そして最後に出力はあなたが望むすべてを示します(クラス名、メソッド名、アンカーリンク、メッセージ)

08-09 11:13:06.023 20025-20025/com.ardakaplan.application I/Application: IN CLASS : (ENApplication.java:29)   ///   IN METHOD : onCreate
    info


0

最近、Androidでログを書き込むこのアプローチを見つけました。これは非常に素晴らしいと思います。

public static final boolean FORCED_LOGGING = true;
private static final int CALLER_STACK_INDEX = 3;

public static void showLogs(String message) {
        if (FORCED_LOGGING) {
            StackTraceElement caller = Thread.currentThread().getStackTrace()[CALLER_STACK_INDEX];

            String fullClassName = caller.getClassName();
            String className = fullClassName.substring(fullClassName.lastIndexOf('.') + 1);
            String methodName = caller.getMethodName();
            int lineNumber = caller.getLineNumber();

            Log.i("*** " + className + "." + methodName + "():" + lineNumber + "\n" , message);
        }
    }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.