当前位置:  技术问答>linux和unix

如何写个log包装函数从而不必每次调用时都要传__FILE__,__LINE__?

    来源: 互联网  发布时间:2015-03-26

    本文导语:  例如log函数调用方式是log("open db failed:%s", "Hello, world!"), 而其效果相当于log("[file:%s,line:%d] open db failed: %s", __FILE__, __LINE__, "Hello, world!") 调用log的形式是: void log(const char *fmt, ...); | 可以设两...

例如log函数调用方式是log("open db failed:%s", "Hello, world!"),
而其效果相当于log("[file:%s,line:%d] open db failed: %s", __FILE__, __LINE__, "Hello, world!")

调用log的形式是:
void log(const char *fmt, ...);

|

可以设两个全局变量:
char *filename;
int *line;

定义一个宏如下:
#define log filename=__FILE__,line=__LINE__,_log

_log函数原型:void _log(const char *fmt, ...);
_log函数中使用全局变量filename和line.

以上适用于单线程的情况。

如果要使用于多线程的环境中,可以将filename和line实现为
函数,就像errno在多线程的情况下的实现那样。其中要使用
thread specific数据。

|
如果是变长参数,不好实现。

用函数好像不行,因为那样__FILE__,__LINE__会被替换
成该函数所在的文件和相应的行号

|
什么意思?
如果你闲敲的太长,用一个宏替换不就行了?
如果是变长,用函数也可以阿。

|
更正:
上文中的 int *line 应为 int line.

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.util.logging类logger的类成员方法: log定义及介绍
  • Android开发笔记之:Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)
  • java命名空间java.util.logging类logmanager的类成员方法: logging_mxbean_name定义及介绍
  • Red Hat无法登录,Cannot open log file "/var/log/Xorg.0.log"
  • java命名空间javax.swing类debuggraphics的类成员方法: log_option定义及介绍
  • 找不到/var/log/vsftpd.log?
  • java命名空间java.lang类strictmath的类成员方法: log定义及介绍
  • log4j的c++移植版 log4cxx
  • java命名空间java.lang类math的类成员方法: log定义及介绍
  • log4j 的 Qt 移植 log4qt
  • java命名空间java.lang类strictmath的类成员方法: log1p定义及介绍
  • C++版的log4j log4cplus
  • java命名空间java.util.logging类handler的类成员方法: flush定义及介绍
  • 使用log4j生成的.log文件,前缀中是不是必须含有当日日期?
  • java命名空间java.util.logging类level的类成员方法: finest定义及介绍
  • tail -f run.log 导致 tail: run.log: file truncated
  • java命名空间java.util.logging类memoryhandler的类成员方法: memoryhandler定义及介绍
  • 一个log4j的问题:我能不能根据level的不同定义不同的输出对象,比如不同的log文件
  • java命名空间java.lang类strictmath的类成员方法: log10定义及介绍
  • Tomcat access log记录到mongo的插件 Tomcat Mongo Access Log Valve
  • java命名空间java.util.logging类memoryhandler的类成员方法: push定义及介绍
  • android轻松管理安卓应用中的log日志 发布应用时log日志全部去掉的方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3