- 论坛徽章:
- 15
|
本帖最后由 yulihua49 于 2016-04-18 13:23 编辑
xhx321 发表于 2016-04-15 12:21
貌似原来的描述把问题写的很乱, 也没表述清楚需求及重点。在这里重新写一下:
需要实现一个宏定义:O_P ...
你这个方法是错误的,无法实现。
你还是看看我给你的例子,可以实现你的要求。函数名和文件名的用法一样,改成
__FUNCTION__
就可以了。tlog.c:
- #include <strproc.h>
- #include <log.h>
- int main(int argc,char *argv[])
- {
- if(argc>1) envcfg(argv[1]);
- EMAS_DEBUG("myname is %s",argv[0]);
- EMAS_ERR("PID is %d",getpid());
- return 0;
- }
复制代码 结果:
- 5 04/18 20:45'53 [D][T:7f7758e5d740] tlog.c(7) myname is ./tlog
- 1 04/18 20:45'53 [E][T:7f7758e5d740] tlog.c(8) PID is 26996
复制代码 系统时间设置的不对,这别管了,改成函数名也很简单。
是不是你要的结果?
给你改个带函数名的:
结果:
- 5 04/18 20:53'53 [D][T:7f0e8c42c740] tlog.c(7) main: myname is ./tlog
- 1 04/18 20:53'53 [E][T:7f0e8c42c740] tlog.c(8) main: PID is 29250
复制代码 log.h:
- #define EMAS_DEBUG(fmt, arg...) ShowLog(EMASS_LOG_DEBUG, "[D][T:%lx] %s(%d) %s: "fmt, pthread_self(), __FILE__, __LINE__, __FUNCTION__, ##arg)
- #define EMAS_VERBOSE(fmt, arg...) ShowLog(EMASS_LOG_VERBOSE, "[V][T:%lx] %s(%d) %s: "fmt, pthread_self(), __FILE__, __LINE__, __FUNCTION__, ##arg)
- #define EMAS_INFO(fmt, arg...) ShowLog(EMASS_LOG_INFO, "[I][T:%lx] %s(%d) %s: "fmt, pthread_self(), __FILE__, __LINE__, __FUNCTION__, ##arg)
- #define EMAS_WARN(fmt, arg...) ShowLog(EMASS_LOG_WARN, "[W][T:%lx] %s(%d) %s: "fmt, pthread_self(), __FILE__, __LINE__, __FUNCTION__, ##arg)
- #define EMAS_ERR(fmt, arg...) ShowLog(EMASS_LOG_ERROR, "[E][T:%lx] %s(%d) %s: "fmt, pthread_self(), __FILE__, __LINE__, __FUNCTION__, ##arg)
复制代码 |
|