안드로이드 Native 단에서 LOG 출력
밥벌이2010. 5. 1. 18:44
어떻게 보면 당연한 말이지만, 안드로이드 Java 단에서의 android.util.Log 클래스에서 제공하는 로그 기능을 Native단에서도 이용할 수 있다. 보통 LOGX (X는 severity를 지정) 라는 매크로를 정의해서 쓰며 해당 소스에서 이게 정의가 되어 있지 않다면 다음과 같이 소스에 정의하고 쓰면 된다.
#include <android/log.h> #define LOG_TAG "MyLogTag" #define LOGE(...) \ __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) #define LOGW(...) \ __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__) #define LOGI(...) \ __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) #define LOGD(...) \ __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) #define LOGV(...) \ __android_log_print(ANDROID_LOG_VERBOSE,LOG_TAG,__VA_ARGS__)
LOG_TAG 는 원하는 이름의 필터를 지정해서 쓰면 되겠다.
참고로 system/core/include/android/log.h 에 보면 다음과 같이 severity가 정의되어 있다
typedef enum android_LogPriority { ANDROID_LOG_UNKNOWN = 0, ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */ ANDROID_LOG_VERBOSE, ANDROID_LOG_DEBUG, ANDROID_LOG_INFO, ANDROID_LOG_WARN, ANDROID_LOG_ERROR, ANDROID_LOG_FATAL, ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */ } android_LogPriority;
이후 eclipse의 DDMS에서 log를 확인하거나, adb shell을 사용해서 에뮬레이터나 장비에 연결한 다음 logcat을 써서 Native에서 입력한 log가 출력되는 것을 볼 수 있다.
'밥벌이' 카테고리의 다른 글
Linux용 SDK를 이용하여 Android Windows SDK 빌드하기 (2) | 2010.05.02 |
---|---|
안드로이드 Native 단에서 GDB로 디버그하기 (4) | 2010.05.01 |
안드로이드 에뮬레이터에서 SD 카드 인식 문제 (0) | 2010.04.15 |
안드로이드 소스에서 ADT 빌드해서 쓰기 (0) | 2010.04.11 |
안드로이드 소스에서 커스텀 SDK 빌드해서 사용하기 (2) | 2010.04.09 |