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 进行授权