C++ 使用log4cxx关闭日志记录以减少开销

C++ 使用log4cxx关闭日志记录以减少开销,c++,performance,logging,log4cxx,C++,Performance,Logging,Log4cxx,我用它来记录日志。但是,日志记录可能会引入一些性能开销,我需要将其最小化 我如何关闭日志记录(在运行时或编译时),以便将开销降至最低,而不是从代码中删除所有日志语句 文件指出: 用户应注意以下性能问题 关闭日志记录时的日志记录性能 当完全关闭日志记录或仅关闭一组级别时,日志请求的成本包括方法调用和 整数比较。LOG4CXX_调试和类似的宏将被抑制 如果未启用请求,则不需要表达式计算 但是如何完全关闭它呢?这是可以实现的最小开销吗?如果您真的想在编译时禁用所有日志记录,只需将log4cxx宏重新定

我用它来记录日志。但是,日志记录可能会引入一些性能开销,我需要将其最小化

我如何关闭日志记录(在运行时或编译时),以便将开销降至最低,而不是从代码中删除所有日志语句

文件指出:

用户应注意以下性能问题

关闭日志记录时的日志记录性能

当完全关闭日志记录或仅关闭一组级别时,日志请求的成本包括方法调用和 整数比较。LOG4CXX_调试和类似的宏将被抑制 如果未启用请求,则不需要表达式计算


但是如何完全关闭它呢?这是可以实现的最小开销吗?

如果您真的想在编译时禁用所有日志记录,只需将log4cxx宏重新定义为nothing即可

#define LOG4CXX_TRACE(logger, expression)    
#define LOG4CXX_DEBUG(logger, expression)    
#define LOG4CXX_INFO(logger, expression)   
#define LOG4CXX_WARN(logger, expression)    
#define LOG4CXX_ERROR(logger, expression)    
#define LOG4CXX_FATAL(logger, expression) 
零开销。对于运行时的情况,您总是要承担一些成本。简单看一下,我实际上使开销比他们的文档所说的略大一些,通常包括一个额外的虚拟方法调用。这基本上是使用这个库的最小开销,尽管您可能会通过使用链接时间优化等来获得一些非常小的改进,以消除方法调用开销