我使用 log4cxx用于记录。但是,日志记录可能会引入一些我需要尽量减少的性能开销。
如何关闭日志记录(在运行时或编译时)以便将开销降至最低 - 除了从代码中删除所有日志语句之外?
文档指出
The user should be aware of the following performance issues.
Logging performance when logging is turned off.
When logging is turned off entirely or just for a set of levels, the cost of a log request consists of a method invocation plus an integer comparison. The LOG4CXX_DEBUG and similar macros suppress unnecessary expression evaluation if the request is not enabled.
但是如何完全关闭它呢?这是可以实现的最小开销吗?
最佳答案
如果你真的想在编译时禁用所有日志记录,只需将 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)
零开销。对于运行时情况,您总是需要承担一些费用。快速浏览一下,我实际上使开销比他们的文档中所说的略大,通常涉及额外的虚拟方法调用。这本质上是使用该库的最小开销,尽管您可能会使用链接时间优化等获得一些非常小的改进以消除方法调用开销。
关于c++ - 使用 log4cxx 关闭日志记录以最小化开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14769878/