文章

Android-Native-打印日志

Android NDK调试,经常需要打日志,日志函数经常忘记,好记性不如烂笔头,整理到这里:

头文件

1
#include <android/log.h> 

原函数

1
int __android_log_print(int prio, const char* tag, const char* fmt, ...)

日志级别

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
typedef enum android_LogPriority {
  /** For internal use only.  */
  ANDROID_LOG_UNKNOWN = 0,
  /** The default priority, for internal use only.  */
  ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */
  /** Verbose logging. Should typically be disabled for a release apk. */
  ANDROID_LOG_VERBOSE,
  /** Debug logging. Should typically be disabled for a release apk. */
  ANDROID_LOG_DEBUG,
  /** Informational logging. Should typically be disabled for a release apk. */
  ANDROID_LOG_INFO,
  /** Warning logging. For use with recoverable failures. */
  ANDROID_LOG_WARN,
  /** Error logging. For use with unrecoverable failures. */
  ANDROID_LOG_ERROR,
  /** Fatal logging. For use when aborting. */
  ANDROID_LOG_FATAL,
  /** For internal use only.  */
  ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */
} android_LogPriority;

使用

简单使用:

1
2
int i = 0;
__android_log_print(ANDROID_LOG_DEBUG, "log_tag", "this is log:%d", i++)

宏封装:

1
2
3
4
5
6
7
8
#include <android/log.h>

#define TAG "tagName" 
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,TAG ,__VA_ARGS__) 	// 定义LOGD类型
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG ,__VA_ARGS__) 		// 定义LOGI类型 
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,TAG ,__VA_ARGS__) 		// 定义LOGW类型 
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG ,__VA_ARGS__) 	// 定义LOGE类型 
#define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,TAG ,__VA_ARGS__) 	// 定义LOGF类型

放到 android_log.h 中,使用时候 #include "android_log.h"即可

使用:

1
LOGE("print a log:%d", 100); //error log

参考

@See https://developer.android.com/ndk/reference/group/logging

@See https://blog.csdn.net/u012102149/article/details/86356228

本文由作者按照 CC BY 4.0 进行授权