Como faço para gravar saídas no Android Logon?


153

Eu quero escrever alguma saída de depuração no log para revisá-lo com o logcat.

Se eu escrever algo no System.out, isso já será exibido no logcat.

Qual é a maneira limpa de gravar no log e adicionar níveis e tags à minha saída?

Respostas:


211

Olhe para dentro android.util.Log. Ele permite gravar no log com vários níveis de log e você pode especificar tags diferentes para agrupar a saída. Por exemplo

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

emitirá um aviso com a tag myApp e a mensagem sem rede.


qual seria a diferença usando log.d?
JMASTER B

5
wem Log.w(...)significa aviso. Existem mais versões: d- debug, e- error, i- info, v- verbose, wtf- What a Terrible Failure. ;-)
patryk.beza

20

O Tag é usado apenas para encontrar facilmente sua saída, porque a Saída do LogCat pode às vezes ser muito longa. Você pode definir em algum lugar da sua classe:

final estático privado String TAG = "myApp";

e use-o ao depurar

Log.v (TAG, "fez alguma coisa");

insira a descrição da imagem aqui

Você também pode aplicar um filtro para pesquisar apenas a tag.


17

Use android.util.Loge os métodos estáticos definidos lá (por exemplo e(), w()).


8
import android.util.Log;

e depois

Log.i("the your message will go here"); 

5

Por favor, veja os logs desta maneira,

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

Você pode usar minha biblioteca chamada RDALogger. Aqui está o link do github .

Com esta biblioteca, você pode registrar sua mensagem com o nome do método / nome da classe / número da linha e o link da âncora. Com esse link, quando você clica em log, a tela passa para esta linha de código.

Para usar a biblioteca, você deve executar as implementações abaixo.

no nível da raiz

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

no nível do aplicativo

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

Para inicializar a biblioteca, você deve começar assim (em Application.class ou antes do primeiro uso)

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

E do que você pode registrar o que quiser;

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

E, finalmente, a saída mostra tudo o que você deseja (nome da classe, nome do método, link da âncora, mensagem)

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


0

Recentemente, eu encontrei essa abordagem para escrever logs no Android, o que eu acho super incrível.

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);
        }
    }
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.