Android의 로그에 출력을 작성하는 방법


153

logcat으로 검토하기 위해 디버깅 출력을 로그에 작성하고 싶습니다.

System.out에 무언가를 쓰면 이미 logcat에 표시됩니다.

로그에 쓰고 출력에 레벨과 태그를 추가하는 가장 확실한 방법은 무엇입니까?

답변:


211

을 살펴보십시오 android.util.Log. 다양한 로그 수준으로 로그에 쓸 수 있으며 다른 태그를 지정하여 출력을 그룹화 할 수 있습니다. 예를 들어

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

myApp 태그와 함께 경고 메시지가 표시되고 네트워크 없음 메시지가 표시됩니다.


를 사용하여 다른 점은 log.d무엇입니까?
JMASTER B

5
w에서 Log.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

최근에 안드로이드에서 로그를 작성하는이 방법을 찾았습니다. 매우 훌륭하다고 생각합니다.

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.