获取输出信息所在代码方法与行号
获取输出信息所在代码方法、行号 C/C++代码实现
可用于辅助输出日志定位,与其他预定义宏组合可输出详细信息
代码实现:
#include <string>
#include <stdlib.h>
#define MessageLog(ch) WriteLog(ch, __LINE__)
// __DATE__ 当前日期,以“MMM DD YYYY”格式表示的字符串常量。
// __TIME__ 当前时间,以“HH : MM:SS”格式表示的字符串常量。
// __FILE__ 当前文件名,字符串常量。
// __LINE__ 当前行号,十进制常量。
// __FUNCTION__ 函数名,为C语言设计
// __FUNCDNAME__ 一个函数的修饰名
// __FUNCSIG__ 一个函数的签名
/*
*@bref 获取输出信息所在方法、所在行(可用于error 日志定位)
*/
std::string WriteLog(const char *ch, const int line)
{
std::string tmpStr = __FILE__;
tmpStr.append(" ");
tmpStr.append(__FUNCTION__);
tmpStr.append("\t");
char lineId[8] = { 0 };
_itoa_s(line, lineId, 10);
tmpStr.append(" ");
tmpStr.append(lineId);
tmpStr.append("\t");
tmpStr.append(ch);
tmpStr.append(" \n");
#if _DEBUG
printf_s("%s \n", tmpStr.c_str());
#endif
return tmpStr;
}
测试方法:
int main()
{
std::string strRet = MessageLog("test log message ");
system("pause");
return 0;
}
测试结果:
d:\project\console\main.cpp WriteLog 39 test log message