使用log4cxx关闭日志记录以减少开销
Turn off logging with log4cxx for minimum overhead
我使用log4cxx进行日志记录。但是,日志记录可能会引入一些性能开销,我需要将其最小化。
如何关闭日志记录(在运行时或编译时),以便将开销降至最低——除了从代码中删除所有日志语句之外?
文件指出
用户应注意以下性能问题。
日志记录关闭时的日志记录性能。
当日志记录完全关闭或仅关闭一组级别时,日志请求的成本包括方法调用和整数比较。LOG4CXX_DEBUG和类似的宏抑制如果未启用请求,则进行不必要的表达式求值。
但是如何完全关闭它呢?这是可以实现的最低开销吗?
如果您真的想在编译时禁用所有日志记录,只需将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)
零开销。对于运行时情况,您总是需要承担一些成本。快速看一下,我实际上使开销比他们的文档所说的略大,通常涉及额外的虚拟方法调用。这基本上是使用该库的最小开销,尽管使用链接时间优化等来消除方法调用开销可能会得到一些非常小的改进。
相关文章:
- 实现无开销push_back的最佳方法是什么
- 将两个数组中的差异记录在第三个数组中
- 别名模板的专业化 C++11 中没有开销的最佳替代方案
- C++标准是否允许<double>在没有开销的情况下实现 std::可选
- 类型擦除的std::function与虚拟函数调用的开销
- 禁止在控制台上记录谷神星
- 创建 Spdlog 异步文件记录器时遇到困难
- fastrtps:如何在发布/订阅级别使用 DDS 历史记录?
- 一组值的零开销下标运算符
- C++ 特征库:引用的性能开销<>
- 如何将自定义记录器与websocketpp一起使用?
- C++结构到德尔福记录dll调用
- 如何判断SSL_read是否已经接收并处理了来自单个消息的所有记录
- C++对开销较少的容器使用多个过滤器
- 如何实现具有多个平台__FILE__和__LINE__信息的 C/C++ 可变参数日志记录宏?
- 在编译时评估函数开销的通用方法
- 我是否可以使用 win32 句柄以编程方式记录发送到/接收到 USB/COM 的内容
- 使用 Doxygen 记录枚举类值,而不启用EXTRACT_ALL
- 在C++中隐藏键盘记录器的控制台窗口
- 使用log4cxx关闭日志记录以减少开销