Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 调试日志的更好方法?_C++_C_Logging - Fatal编程技术网

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。在这种情况下,您可能应该在公共头文件中定义它(除非您希望应用程序中的不同模块具有不同的日志记录级别)。