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__)

//留个坑,其他的后面封装
上一篇 下一篇

猜你喜欢

热点阅读