int __android_log_print(
int priority,
const char *tag,
const char *format,
...
)
格式化打印日志。
int priority
为日志等级
。可以传入如下的枚举值:
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;
const char *tag
是标签,用于过滤日志。
const char *format
用于格式化,与printf函数的同名参数一样。
若成功,则返回0
。
若失败,则返回错误码
。
#include <android/log.h>
#include "com_fpliu_newton_LogTest.h"
#define TAG "com_fpliu_newton_LOGTest.cpp"
#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__);
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG, __VA_ARGS__);
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__);
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN, TAG, __VA_ARGS__);
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR, TAG, __VA_ARGS__);
#define LOGF(...) __android_log_print(ANDROID_LOG_FATAL, TAG, __VA_ARGS__);
JNIEXPORT void JNICALL Java_com_fpliu_newton_LogTest_printLog(JNIEnv *env, jclass clazz) {
#ifdef DEBUG
LOGV("x = %d\n", 10);
LOGD("y = %f\n", 2.2);
LOGI("z = %s\n", "haha");
LOGW("x = %02x\n", 100);
LOGE("y = %lu\n", 100);
LOGF("x = %d, y = %lu\n", 100, 100);
#endif
}
注意:由于函数名称
和参数
都很长,为了便于使用,常常被定义成宏
。