C++ 中的日志记录(性能考虑)

Avi*_*ano 1 c++ debugging performance logging

我是cpp新手(来自Java)。我正在写一个cpp应用程序。该应用程序的性能至关重要。我寻找了一个日志框架,并 在上面链接的末尾找到了log4cxx ,其中有性能部分解释:

当完全关闭日志记录或仅关闭一组级别的日志记录时,日志请求的成本包括方法调用加上整数比较

我记得在大学时代,我们使用 with#ifndf来包装伐木。

问题:

  1. 使用包装日志记录#ifndf仍然是标准做法吗?

  2. 是否有类似下面的伪代码?

logger.Log_Debug(() => { "My complicated log message " + thisFunctionTakesALongTime() + " will take no time" });
Run Code Online (Sandbox Code Playgroud)

Luc*_*ore 5

您可以创建自己的宏,该宏在发布模式下不执行任何操作:

#ifdef _DEBUG
#define LOG_DEBUG(x) logger.Log_Debug(x)
#else
#define LOG_DEBUG(x)
#endif
Run Code Online (Sandbox Code Playgroud)

  • @user1495181 是的,如果你需要的话。但上面应该是`#define LOG_DEBUG(x) ((void)x)`来发布,以防调用`x`产生有价值的副作用。 (3认同)