今天在项目上遇到一个问题,需要将目前代码中的全部LOG增加此条LOG所在文件及行数等定位标识,方便定位代码。在网上折腾了一下,整理一下“printf”中用到的一些接口及一个相对使用较方便的LOG输出格式。
//不想弄清楚实现原理的直接拿走代码用,想了解一下的可以往下看一看。
#include "stdio.h"
#define __FILE__ "main.c" //LOG所在文件名,因为是上位机测试因为在此处直接使用define模拟
#define __FUNCTION__ "main" //LOG所在函数名,因为是上位机测试因为在此处直接使用define模拟
#define __LINE__ 147 //LOG所在行号,因为是上位机测试因为在此处直接使用define模拟
#define LOG_LEV 7 //LOG等级,可以分为ERR、WARNING、INFO、NOTICE·····
#define MY_LOG(APP_LEVEL, APP_MODU,CONTENT,...) printf("<%d>[%s][%s][%s][%d]:"CONTENT,APP_LEVEL, APP_MODU,__FILE__,__FUNCTION__,__LINE__,##__VA_ARGS__);
int main()
{
MY_LOG(LOG_LEV,"TEST","test:[char*]%s,[int]%d\r\n\r\n\r\n\r\n","hello",1);
return 0;
}
直接看上面的代码可能是有点看不懂(看懂的大神可以出门了[奸笑]),尤其是&#