【发布时间】:2015-03-16 08:34:30
【问题描述】:
我继承了一个大型代码库,其中std::cout 经常用于打印调试信息。代码中没有真正的调试/日志功能,因为这将是一个短暂的任务(错误修复),现在实现调试/日志功能是不可能的。
这个程序输出的文本量真的让我很困扰,至少在我必须处理它之前,我想暂时禁用所有打印输出。
我现在看到了两种解决方案:
- 只需将它们注释掉...这需要大量工作,因为某些
std::couts跨越多行,所以我必须手动找到它们 - 将所有出现的
std::cout替换为具有自己的operator <<并简单地吞下所有输出的构造
对于这个问题你有更好的解决方案吗?
【问题讨论】:
-
为什么不用调用日志函数/方法来替换所有这些控制台打印?然后,您可以根据各种条件在单个位置启用/禁用打印(例如仅启用调试,或在用户选择此选项时启用等)。
-
#ifdef DEBUG
std::cout << ...#endif -
@MariusBancila 在这个项目中没有实现日志功能......原来的高薪承包商/顾问认为它不重要/无关紧要
-
好吧,它最初的样子并不重要。如果你想做点什么,那就做对的事。
-
@fritzone:这不是重点 - 如果您更改
cout语句以调用某个宏,您可以先进行无操作(什么也不做)宏替换,然后如果您想替换花时间在一些增强的日志记录上(例如滚动固定大小的文件、历史管理、通过 TCP 进行日志记录、系统服务等),您可以更新所有日志记录都经过的单个宏。