如何从源代码中禁用std :: clog日志记录?

时间:2016-08-26 07:44:25

标签: c++ c++11

在开发代码时,我有许多控制台日志记录(std::clog)和一些控制台输出(std::cout)。但现在,我想在线提交我的源代码,我想禁用所有控制台日志记录(clog),但保留控制台输出(cout

我可以肯定地评论我的所有//std::clog,但有没有更好的方法来禁用我的源文件中的所有日志记录,?

2 个答案:

答案 0 :(得分:7)

您可以重定向阻塞,创建自己的ofstream并使用rdbuf功能。

std::ofstream nullstream;
std::clog.rdbuf(nullstream.rdbuf());

答案 1 :(得分:1)

Andreas Papadopoulos' answer复制到一个稍微不同的问题 - 请务必在那里投票!

当然,你可以(example here):

int main() {
    std::clog << "First message" << std::endl;

    std::clog.setstate(std::ios_base::failbit);
    std::clog << "Second message" << std::endl;

    std::clog.clear();
    std::clog << "Last message" << std::endl;

    return 0;
}

输出:

First message
Last message

这是因为将流置于fail状态会使其静默地丢弃任何输出,直到故障清除被清除。

相关问题