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



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

我当然可以评论我所有的//std::clog,但是有没有更好的方法来禁用所有日志记录在我的源文件,?

你可以重定向clog,创建自己的ofstream并使用rdbuf函数

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

摘自Andreas Papadopoulos对一个稍微不同的问题的回答——一定要在那里给他投票!


当然,你可以(这里的例子):

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状态将使它静默地丢弃任何输出,直到failbit被清除。

最新更新