使用log4cxx关闭日志记录以获得最小开销

时间:2013-02-08 09:55:16

标签: c++ performance logging log4cxx

我使用log4cxx进行日志记录。但是,日志记录可能会引入一些我需要最小化的性能开销。

如何关闭日志记录(在运行时或编译时)以便最大限度地减少开销 - 除了从代码中删除所有日志语句?

文档说明了

  

用户应了解以下性能问题。

     

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

     

当完全关闭日志记录或仅关闭一组级别时,日志请求的成本包括方法调用和   整数比较。 LOG4CXX_DEBUG和类似的宏抑制   如果未启用请求,则进行不必要的表达式评估。

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

1 个答案:

答案 0 :(得分:4)

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

#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) 

零开销。对于运行时情况,您总是需要支付一些费用。从快速看,我实际上使开销略大于他们的文档所说的,通常涉及额外的虚拟方法调用。这基本上是使用此库的最小开销,尽管使用链接时优化等可能会获得一些非常小的改进,以消除方法调用开销。