Как мне записать результаты в Log in Android?


153

Я хочу написать отладочный вывод в журнал, чтобы просмотреть его с помощью logcat.

Если я что-то пишу в System.out, это уже отображается в logcat.

Как правильно записать в журнал и добавить уровни и теги в мой вывод?

Ответы:


211

Посмотри в android.util.Log. Это позволяет вам писать в журнал с различными уровнями журнала, и вы можете указать различные теги для группировки вывода. Например

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

выдаст предупреждение с тегом myApp и сообщением no network.


что будет отличаться при использовании log.d?
JMASTER B

5
wв Log.w(...)обозначает предупреждение. Есть еще версии: d- отладка, e- ошибка, i- информация, v- многословно, wtf- что за ужасный сбой. ;-)
patryk.beza

20

Тэг просто используется, чтобы легко найти ваш вывод, потому что иногда вывод LogCat может быть очень длинным. Вы можете определить где-нибудь в своем классе:

приватная статическая 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 .

С помощью этой библиотеки вы можете записать ваше сообщение с именем метода / именем класса / номером строки и ссылкой. С этой ссылкой, когда вы нажимаете на журнал, экран переходит к этой строке кода.

Чтобы использовать библиотеку, вы должны сделать реализации ниже.

в корневой системе 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);
        }
    }
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.