_log.h
- #ifdef __cplusplus
- extern "C" {
- #endif
- #ifndef LOG_TAG
- # define LOG_TAG "\t\t" // 这个是自定义的LOG的标识
- #endif
- #ifdef WIN32
- int log_d(const char * format, ...);
- int log_i(const char * format, ...);
- int log_w(const char * format, ...);
- int log_e(const char * format, ...);
- int log_v(const char * format, ...);
- # define LOGD log_d
- # define LOGI log_i
- # define LOGW log_w
- # define LOGE log_e
- # define LOGV log_v
- #else // #ifdef WIN32
- # include <jni.h>
- # include <android/log.h> // 这个是输出LOG所用到的函数所在的路径
- //Android.mk中要添加LOCAL_LDLIBS := -llog
- //# 如果不包含这一句的话,会提示:__android_log_print 未定义
- # define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) // 定义LOG类型
- # define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__) // 定义LOG类型
- # define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__) // 定义LOG类型
- # define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__) // 定义LOG类型
- # define LOGV(...) __android_log_print(ANDROID_LOG_FATAL,LOG_TAG,__VA_ARGS__) // 定义LOG类型
- #endif //#ifdef WIN32
- //测试程序
- void testLog(void);
- #ifdef __cplusplus
- };
- #endif
_log.c
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdarg.h>
- #include "_log.h"
- #define BUFFER_SIZE (1024 * 1)
- static char db_buffer[BUFFER_SIZE];
- #ifdef WIN32
- # define vsnprintf _vsnprintf
- #endif //#ifdef WIN32
- #define db_print(__tag, __p, __format) \
- do { \
- int n = 0; \
- va_list args; \
- va_start(args, __format); \
- vsnprintf(db_buffer, BUFFER_SIZE - 1, __format, args); \
- db_buffer[BUFFER_SIZE - 1] = 0; \
- __p(__tag);\
- n = __p(db_buffer); \
- va_end(args); \
- return n; \
- } while (0)
- int log_d(const char * format, ...)
- {
- db_print("debug: ", printf, format);
- // return 0;
- }
- int log_i(const char * format, ...)
- {
- db_print("info : ", printf, format);
- }
- int log_w(const char * format, ...)
- {
- db_print("warn : ", printf, format);
- }
- int log_e(const char * format, ...)
- {
- db_print("error: ", printf, format);
- }
- int log_v(const char * format, ...)
- {
- db_print("verbose: ", printf, format);
- }
- //////////////////////////////////////////////////////////////////////////
- //测试程序
- void testLog(void)
- {
- LOGD("ddddddd = %d\n", __LINE__);
- LOGI("iiiiiii = %d\n", __LINE__);
- LOGW("wwwwwww = %d\n", __LINE__);
- LOGE("eeeeeee = %d\n", __LINE__);
- LOGV("vvvvvvv = %d\n", __LINE__);
- }