int __android_log_print(
    int         priority,
    const char *tag,
    const char *format,
    ...
)
1.0、参考
1.1、此函数的作用

格式化打印日志。

1.2、参数说明

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函数的同名参数一样。

1.3、返回值说明

若成功,则返回0

若失败,则返回错误码

1.4、使用示例
#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
}

注意:由于函数名称参数都很长,为了便于使用,常常被定义成