ACE库的LOGGING记录使用摘要(1)

大概3年前我开始寻找一个LOGGING的C++库, 主要的要求是:

  • 容易使用, 支持PRINTF的格式化输出
  • 能够将记录导向到文件去, 支持SYSLOG导向更好
  • 同时支持WINDOWS和LINUX
  • 分级记录, 能够关闭一些级别的记录, 能够完全关掉记录最佳

对这些要求解释一下。 传统上iostream的输出被推崇, 但是根据我多年的经验而言效果并不好,一般写的代码要大于printf, 而且输出控制很差。 很多多年的C++ 程序员也搞不清如何将一个字符串右排, 而同样的功能printf就简单多了。 GOOGLE C++程序员指引也说 - iostream应该尽量少用。

在分级输出上一般人都明白这道理 - 一个大的程序可能会有大量的LOG记录, 不仅损害程序的性能, 而且太多LOG无法容易找到问题的源头。对我们的程序来说, 还希望能够完全关掉LOGGING。

当时找了一下专门的LOGGING库, 比如log4cxx, log4cplus, and Log4cpp。 最后落到了ACE上。 比较而言ACE的功能相当地全, 而且增加的代码很少.

本文不打算讨论ACE库的别的东西, 比如如何编译等等。 要说明的是, ACE库文档要求你的程序启动时调用ACE::init()以及程序关闭是调用ACE::fini(). 根据我的测试, 如果只是写到终端或者文件, 这是不需要的。 但是如果要使用高级的导向就需要了。

ACE LOGGING基本上只掌握一个宏: ACE_DEBUG。 别的什么都不用了。

ACE_DEBUG

这个宏调用的格式是:

ACE_DEBUG((severity, formatting-args));

要注意的是这里的双括号。 正是有了这个双括号,所用的LOGGING语句能够扩展到空, 如果需要的话。括号里面是两个参数 - 第一个参数是记录的级别, 后面就是跟printf类似的东西。
下面就是一个简单的LOGGING语句:

ACE_DEBUG((LM_INFO, "Loop %d: x=%0.2f", i, x));

原文链接: https://www.cnblogs.com/CplusplusExpert/archive/2010/12/01/ACE_Logging.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    ACE库的LOGGING记录使用摘要(1)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/18147

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午6:53
下一篇 2023年2月7日 下午6:54

相关推荐