C++ 调试日志的更好方法?
是否有更好的、可能更符合行业标准的方法来在代码中打开和关闭调试日志记录 我目前的情况与此类似:C++ 调试日志的更好方法?,c++,c,logging,C++,C,Logging,是否有更好的、可能更符合行业标准的方法来在代码中打开和关闭调试日志记录 我目前的情况与此类似: #define logging [.. in several places throughout the code ..] #ifdef logging cout << "My debug messages\n"; #endif #定义日志记录 […在代码中的几个地方] #ifdef日志记录 库特 它不是很健壮;我更喜欢像#定义日志记录1,并且能够检查启用了哪个日志记录级别来确
#define logging
[.. in several places throughout the code ..]
#ifdef logging
cout << "My debug messages\n";
#endif
#定义日志记录
[…在代码中的几个地方]
#ifdef日志记录
库特
它不是很健壮;我更喜欢像#定义日志记录1
,并且能够检查启用了哪个日志记录级别来确定调试输出的粒度
你为什么不这么做?只是不要使用#ifdef
,而是使用#if
:
#if logging>1
// something
#endif
另外-您可以在单独的文件(如myDefines.h
)中定义日志记录
,并将其包含在其他文件中
//myDefines.h
#define logging 2
//someOtherFile.h
#include "myDefines.h"
#if logging>1
// something
#endif
它不是很健壮;我更喜欢像#定义日志记录1
,并且能够检查启用了哪个日志记录级别来确定调试输出的粒度
那你为什么不那样做呢?只是不要使用#ifdef
,而是使用#if
:
#if logging>1
// something
#endif
另外-您可以在单独的文件(如myDefines.h
)中定义日志记录
,并将其包含在其他文件中
//myDefines.h
#define logging 2
//someOtherFile.h
#include "myDefines.h"
#if logging>1
// something
#endif
一个建议:
您可以在项目设置中定义日志记录,而不是在每个要使用日志记录的文件中定义日志记录。一个建议:
您可以在项目设置中定义日志记录,而不是在每个要使用日志记录的文件中定义日志记录。您可能想签出Google的glog项目:
但是,这可能比您期望的更高的开销
一些简单的你可以尝试的东西,如果你愿意的话
编译器支持-Dmacroname标志,您可以
在编译时使用进行日志记录。例如:
g++ -Dlogging program.cpp -o program
将日志宏定义为1。您可能希望签出Google的glog项目:
但是,这可能比您期望的更高的开销
一些简单的你可以尝试的东西,如果你愿意的话
编译器支持-Dmacroname标志,您可以
在编译时使用进行日志记录。例如:
g++ -Dlogging program.cpp -o program
将日志宏定义为1。无需在每个文件中定义它,例如,使用选项编译-dloging
这一要求的频率非常高。有许多框架都是专为日志而设计的。他们已经解决了这个问题,还有更多。@JoachimPileborg:any*nix兼容的建议吗?:)syslog/rsyslogd适用于linux。除了conf文件之外,您还可以使用setlogmask(我想这就是它的名称)从您自己的应用程序内部控制日志级别。无需在每个文件中定义它,例如,使用选项编译-dloging
这一问题的频率非常高。有许多框架都是专为日志而设计的。他们已经解决了这个问题,还有更多。@JoachimPileborg:any*nix兼容的建议吗?:)syslog/rsyslogd适用于linux。除了conf文件之外,您还可以使用setlogmask(我想这就是它的名称)从您自己的应用程序内部控制日志级别?我假设使用某种IDE?我目前(经常)没有为我的项目使用IDE。那么,在这种情况下,您可能应该在公共头文件中定义它(除非您希望应用程序中的不同模块具有不同的日志记录级别)。项目设置?我假设使用某种IDE?我目前(经常)没有在我的项目中使用IDE。在这种情况下,您可能应该在公共头文件中定义它(除非您希望应用程序中的不同模块具有不同的日志记录级别)。