C++日志中__FILE__去掉路径
(2018-12-17 15:44:52)
标签:
qtlog__file__ |
分类: linux |
在C/C++编译时,可以使用__FUNCTION__、__FILE__和__LINE__等编译器内置宏定义获得运行函数、文件及行数等信息,其中__FILE__变量的值会有变化。
最近在Linux下QT编程写日志时,也想使用这几个宏定义,结果__FILE__输出的是相对路径(根据工程pro文件中使用的文件名),这样在日志中,会显得文件名称有路径名称,导致日志可读性降低。在网上搜索了两种解决的办法:
1,重新定义__FILE__宏定义;
CFALG += -U__FILE__ -D__FILE__='"$(subst $(dir
$<),,$<)"'
该方法在QT中没有试验成功(当然CFLAG需要改为QT中关键字)
2,新加一个宏定义来解析文件名
#define __FILENAME__ (strrchr(__FILE__, '/') ?
strrchr(__FILE__, '/') + 1 : __FILE__)
该方法中使用了两次strrchr函数,运行效率会有些影响
最终还是自己写了一个函数,从头遍历__FILE__变量,找到最后一个“/”符号,然后返回后面的字符串,当找不到时直接返回__FILE__变量。
char *Log::GetFileName(const char
*file)
{
char *name = NULL;
char *ptr = (char*)file;
if(file == NULL)
return NULL;
while(*ptr != '\0')
{
if(*ptr == '/')
name = ptr;
ptr++;
}
return name == NULL ? (char*)file :
(name+1);
}
感谢链接:
方法1:https://blog.csdn.net/huojianying123456/article/details/70176755
方法2:http://www.it1352.com/348777.html
方法2:http://www.it1352.com/348777.html