另一组log函数

android 同时被 2 个专栏收录
298 篇文章 0 订阅
28 篇文章 0 订阅

_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__);
}


  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值