【发布时间】:2014-03-23 09:03:45
【问题描述】:
是否有更好的、可能更符合行业标准的方式来打开和关闭整个代码中的调试日志记录?
我目前的情况类似于:
#define logging
[.. in several places throughout the code ..]
#ifdef logging
cout << "My debug messages\n";
#endif
我只是在不再需要 #define logging 时将其注释掉。
这种方法的一些缺点似乎是:
- 我必须在每个我想在其中使用它的文件中
#define logging - 它不是很健壮;我更喜欢
#define logging 1之类的东西,并且能够检查启用了哪个日志记录级别 以确定我的调试输出的粒度。不幸的是,据我所知,#ifdef并不关心您选择什么值,它只关心它是否已定义
对于如何更好地实现这一点有什么建议吗?
【问题讨论】:
-
不需要在每个文件中都定义它,例如编译选项
-Dlogging -
这个问题被问的频率太惊人了。
-
有很多框架是专门为记录而设计的。他们已经解决了这个问题,还有更多。
-
@JoachimPileborg:有任何*nix 兼容的建议吗? :)
-
syslog/rsyslogd 适用于 linux。除了 conf 文件之外,您还可以使用 setlogmask(我认为无论如何都是这样)从您自己的应用程序内部控制日志级别。