본문 바로가기
Android/기본

[Android]안드로이드 스튜디오 로그(Log) 가이드

by LoseyKim 2024. 11. 10.

오늘은 안드로이드 스튜디오에서 사용되는 로그에 대해서 알아보려고 해요. 로그(Log)는 개발자가 애플리케이션을 디버깅하거나 상태를 확인하는 데 매우 유용한 도구예요. 안드로이드 개발을 하다 보면 로그를 자주 사용하게 되는데요, 그 이유와 사용 방법에 대해 함께 알아볼게요.


1. 로그의 중요성

안드로이드 애플리케이션을 개발하면서 코드를 실행해도 예상대로 동작하지 않거나, 특정 상황에서 오류가 발생할 때가 있어요. 이럴 때 로그를 활용하면 애플리케이션 내부에서 무슨 일이 일어나는지 쉽게 파악할 수 있어요. 로그는 개발자에게 애플리케이션의 상태를 텍스트로 보여주기 때문에, 문제를 찾고 해결하는 데 큰 도움이 돼요.


2. 로그 레벨

`Log` 클래스는 다섯 가지 주요 로그 레벨을 제공해요. 각 로그 레벨은 용도와 중요도에 따라 다르며, 개발 중 필요한 정보를 필터링하여 볼 수 있어요.

로그 레벨 메서드 설명
Verbose `Log.v()` 상세한 디버깅 정보를 출력해요. 너무 많은 정보가 출력될 수 있어요.
Debug `Log.d()` 디버깅에 유용한 정보를 출력해요. 변수 값이나 함수 호출 등을 확인할 때 사용해요.
Info `Log.i()` 일반적인 상태나 성공적인 작업을 알릴 때 사용해요.
Warn `Log.w()` 주의가 필요한 상황을 나타내요. 치명적인 오류는 아니지만 주의가 필요해요.
Error `Log.e()` 애플리케이션의 치명적인 오류를 기록해요. 문제 발생 시 원인 파악에 도움을 줘요.
Assert `Log.wtf()` 절대 발생해서는 안 되는 심각한 오류를 기록해요.

3. 로그 메서드 사용법

각 로그 메서드를 사용하는 예제 코드예요. 실제 앱에서 로그 메시지를 통해 개발 중 필요한 정보를 확인하고 문제를 해결하는 데 도움이 될 거예요.

import android.util.Log

fun exampleFunction() {
    // VERBOSE 로그: 디버깅을 위한 아주 상세한 정보
    Log.v("MainActivity", "Verbose 로그 - 모든 단계의 정보 기록")

    // DEBUG 로그: 디버깅을 위한 정보
    val x = 42
    Log.d("MainActivity", "Debug 로그 - 변수 값 확인: x = $x")

    // INFO 로그: 일반적인 정보 기록
    Log.i("MainActivity", "Info 로그 - 앱이 정상적으로 시작되었습니다.")

    // WARN 로그: 경고 메시지
    Log.w("MainActivity", "Warn 로그 - 네트워크가 불안정합니다.")

    // ERROR 로그: 오류 메시지
    val exception = Exception("NullPointerException")
    Log.e("MainActivity", "Error 로그 - 예외 발생: ${exception.message}")

    // ASSERT 로그: 예상치 못한 심각한 오류
    Log.wtf("MainActivity", "WTF 로그 - 매우 심각한 오류 발생")
}

위 코드에서는 각 로그 레벨을 사용하는 방법을 보여주고 있어요.


4. 로그 태그 사용하기

각 로그 메서드의 첫 번째 인수로 `TAG`를 지정할 수 있어요. `TAG`는 주로 클래스 이름이나 특정 모듈을 나타내는 문자열로 설정하며, Logcat에서 특정 태그로 로그를 검색할 때 유용해요. 다음과 같이 정의하여 사용하는 것이 좋아요.

private const val TAG = "MainActivity"

Log.d(TAG, "앱이 시작되었습니다.")

이렇게 하면 클래스나 모듈별로 로그를 쉽게 구분할 수 있어요.


5. 로그캣(Logcat) 사용하기

안드로이드 스튜디오에서는 로그를 확인하기 위해 로그캣을 사용해요. 로그캣은 안드로이드 스튜디오 하단의 'Logcat' 탭에서 찾을 수 있어요. 여기에서 로그 메시지를 실시간으로 확인할 수 있고, 원하는 태그나 로그 레벨을 필터링해서 볼 수 있어요. 개발 중에는 로그를 통해 앱의 흐름과 상태를 쉽게 파악할 수 있답니다.

특히 로그캣에서 필터를 사용하면 특정 태그나 로그 레벨만 표시할 수 있어서, 필요한 정보만 추적하는 데 매우 유용해요. 예를 들어, "MainActivity"라는 태그를 검색하면 해당 태그와 관련된 로그만 볼 수 있어요. 이렇게 하면 불필요한 로그를 걸러내고 원하는 정보를 빠르게 찾을 수 있어요.


6. 상용 릴리스에서 로그 주의사항

로그는 개발 중에 매우 유용하지만, 상용 릴리스에서는 과도한 로그로 인해 보안 문제가 발생할 수 있어요. 특히 오류나 예외 로그에 민감한 정보가 포함될 수 있으므로 릴리스 빌드에서는 로그 출력을 제한하거나 비활성화하는 것이 좋아요. 이를 위해 `BuildConfig.DEBUG` 플래그를 사용해 디버그 빌드에서만 로그를 기록할 수 있어요.

안드로이드에서는 프로가드(Proguard)나 R8와 같은 도구를 사용해 로그를 제거하거나 난독화할 수 있어요.

if (BuildConfig.DEBUG) {
    Log.d(TAG, "디버그 빌드에서만 로그가 기록됩니다.")
}

참고자료

https://developer.android.com/reference/kotlin/android/util/Log?_gl=1

Log | Android Developers

developer.android.com

https://developer.android.com/studio/debug/logcat?_gl=1&hl=ko

Logcat을 이용하여 로그 보기 | Android Studio | Android Developers

Android 스튜디오에서 Logcat 창에 시스템 메시지를 표시하는 방법을 알아보세요.

developer.android.com