最近在调试安卓底层,发现一直想打印ALOGV但都看不见日志输出。原来,系统默认是不打印v级的日志,需要添加代码
#define LOG_NDEBUG 0 //打开LOGV
#define LOG_NIDEBUG 0 //打开LOGI
#define LOG_NDDEBUG 0 //打开LOGD
可以直接使用以下代码打开所有日志开关:#undef NDEBUG //打开LOGV/LOGI/LOGD
也可以使用LOGD函数打印日志,使用方法为:
第一步:在对应的mk文件中加入:LOCAL_LDLIBS := -llog第二步:在要使用LOG的cpp文件中加入:#define LOG_TAG "TAG" #include <android/log.h> #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)接下来就可以使用LOGD函数打印日志啦,全部日志函数定义如下:#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG, __VA_ARGS__)这里要注意的是,LOG_TAG的定义一定要在#include <android/log.h>这个头文件之前,这是为什么呢?我们打开system/core/include/cutils/log.h头文件可以看到:
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , LOG_TAG __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO , LOG_TAG, __VA_ARGS__)
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN , LOG_TAG, __VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR , LOG_TAG, __VA_ARGS__)#ifndef LOG_TAG
#define LOG_TAG NULL
#endif
所以程序中引入log.h头文件之前要定义LOG_TAG,不然就为空.