Jak napisać dane wyjściowe do logowania w systemie Android?


153

Chcę napisać dane wyjściowe debugowania do dziennika, aby przejrzeć je za pomocą logcat.

Jeśli napiszę coś do System.out, jest to już wyświetlane w logcat.

Jaki jest prosty sposób zapisywania w dzienniku i dodawania poziomów i tagów do wyników?

Odpowiedzi:


211

Zajrzyj do android.util.Log. Umożliwia zapisywanie w dzienniku z różnymi poziomami dziennika i pozwala określić różne znaczniki w celu pogrupowania wyników. Na przykład

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

wyświetli ostrzeżenie z tagiem mojaAplikacja i komunikatem brak sieci.


co by się zmieniło przy użyciu log.d?
JMASTER B

5
ww Log.w(...)oznacza ostrzeżenie. Jest więcej wersji: d- debug, e- error, i- info, v- verbose, wtf- What a Terrible Failure. ;-)
patryk.beza

20

Tag służy po prostu do łatwego wyszukiwania wyników, ponieważ dane wyjściowe LogCat mogą być czasami bardzo długie. Możesz zdefiniować gdzieś w swojej klasie:

prywatny statyczny końcowy String TAG = "myApp";

i używaj go podczas debugowania

Log.v (TAG, „coś zrobił”);

wprowadź opis obrazu tutaj

Możesz również zastosować filtr, aby wyszukać tylko tag.




5

Zobacz dzienniki w ten sposób,

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

Możesz skorzystać z mojej biblioteki o nazwie RDALogger. Tutaj jest link do github .

Dzięki tej bibliotece możesz rejestrować wiadomości z nazwą metody / nazwą klasy / numerem linii i linkiem do zakotwiczenia. Za pomocą tego linku, po kliknięciu log, ekran przechodzi do tej linii kodu.

Aby korzystać z biblioteki, musisz wykonać poniższe implementacje.

w gradle na poziomie głównym

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

na poziomie aplikacji

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

Aby zainicjować bibliotekę, powinieneś zacząć w ten sposób (w Application.class lub przed pierwszym użyciem)

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

I niż możesz rejestrować, co chcesz;

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

Na koniec dane wyjściowe pokazują wszystko, czego chcesz (nazwa klasy, nazwa metody, link do zakotwiczenia, wiadomość)

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


0

Niedawno odkryłem takie podejście do pisania logów na Androidzie, które uważam za super niesamowite.

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);
        }
    }
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.