ndk_android_log
2020-06-07 本文已影响0人
汇源可乐
0x01:导入头文件
#include<android/log.h>
0x02:简单使用
//__android_log_print(int prio, const char* tag, const char* fmt, ...)
__android_log_print(ANDROID_LOG_INFO,"TAG","log content");
0x03:使用宏定义
#define TAG "TAG"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__)
0x04:使用宏定义后的内容
LOGI("log content:%s\n","something");
0x05:源码
#pragma once
#include <stdarg.h>
#ifdef __cplusplus
extern "C" {
#endif
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;
/*常量打印*/
int __android_log_write(int prio, const char* tag, const char* text);
/*使用与printf类似*/
int __android_log_print(int prio, const char* tag, const char* fmt, ...);
#if defined(__GNUC__)
__attribute__((__format__(printf, 3, 4)));
#endif
/*和vprintf类似*/
int __android_log_vprint(int prio, const char* tag, const char* fmt, va_list ap)
#if defined(__GNUC__)
__attribute__((__format__(printf, 3, 0)))
#endif
;
void __android_log_assert(const char* cond, const char* tag, const char* fmt,
...)
#if defined(__GNUC__)
__attribute__((__noreturn__))
__attribute__((__format__(printf, 3, 4)))
#endif
;
#ifndef log_id_t_defined
#define log_id_t_defined
typedef enum log_id {
LOG_ID_MIN = 0,
LOG_ID_MAIN = 0,
LOG_ID_RADIO = 1,
LOG_ID_EVENTS = 2,
LOG_ID_SYSTEM = 3,
LOG_ID_CRASH = 4,
LOG_ID_STATS = 5,
LOG_ID_SECURITY = 6,
LOG_ID_KERNEL = 7,
LOG_ID_MAX
} log_id_t;
#endif
int __android_log_buf_write(int bufID, int prio, const char* tag,
const char* text);
int __android_log_buf_print(int bufID, int prio, const char* tag,
const char* fmt, ...)
#if defined(__GNUC__)
__attribute__((__format__(printf, 4, 5)))
#endif
;
#ifdef __cplusplus
}
#endif
0x06:轻松使用
#define TAG "TAG"
#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__)
#define LOG_C_V(CONSTANT) __android_log_write(ANDROID_LOG_VERBOSE,TAG,CONSTANT)
#define LOG_C_D(CONSTANT) __android_log_write(ANDROID_LOG_DEBUG,TAG,CONSTANT)
#define LOG_C_I(CONSTANT) __android_log_write(ANDROID_LOG_INFO,TAG,CONSTANT)
#define LOG_C_W(CONSTANT) __android_log_write(ANDROID_LOG_WARN,TAG,CONSTANT)
#define LOG_C_E(CONSTANT) __android_log_write(ANDROID_LOG_ERROR,TAG,CONSTANT)
#define LOG_C_F(CONSTANT) __android_log_write(ANDROID_LOG_FATAL,TAG,CONSTANT)
#define LOG_ARR_V(FORMAT,...) __android_log_vprint(ANDROID_LOG_VERBOSE,TAG,FORMAT,__VA_ARGS__)
#define LOG_ARR_D(FORMAT,...) __android_log_vprint(ANDROID_LOG_DEBUG,TAG,FORMAT,__VA_ARGS__)
#define LOG_ARR_I(FORMAT,...) __android_log_vprint(ANDROID_LOG_INFO,TAG,FORMAT,__VA_ARGS__)
#define LOG_ARR_W(FORMAT,...) __android_log_vprint(ANDROID_LOG_WARN,TAG,FORMAT,__VA_ARGS__)
#define LOG_ARR_E(FORMAT,...) __android_log_vprint(ANDROID_LOG_ERROR,TAG,FORMAT,__VA_ARGS__)
#define LOG_ARR_F(FORMAT,...) __android_log_vprint(ANDROID_LOG_FATAL,TAG,FORMAT,__VA_ARGS__)
//留个坑,其他的后面封装