[英]Why use a Logger instead of cout?
在大多数开源 C++ 代码中,我可以看到使用了像 Google 日志库glog
这样的记录器。 但是有什么好处呢? 我能找到的唯一优点:
因此,如果我不进行多线程处理并且不需要严重性级别,那么使用std::cout
安全还是应该继续使用记录器? 为什么?
使用记录器通常比直接写入标准输出更通用。 记录器通常可以配置为写入标准输出或文件或其他地方。
一般来说,除了玩具程序外,不建议直接使用std::cout
。 考虑你有一个功能
void foo() {
auto x = calculate_some_result();
std::cout << x;
}
那么这个函数的用途非常有限:它只能写入std::cout
,不能写入其他任何地方。 然而,原则上只要稍作改动,就可以将结果写在任何地方:
void foo(std::ostream& out) {
auto x = calculate_some_result();
out << x;
}
现在,相同的函数可以写入文件、stdout 或任何其他ostream
。 由于此类输出通常在整个应用程序中使用,并且具有应用程序范围的配置是有益的,因此可以使用记录器(通常是全局对象)代替:
void foo() {
auto x = calculate_some_result();
LOGGER << x;
}
记录器为您提供更多控制——您可以调整严重性阈值,您可以决定日志记录的位置(例如,文件、标准输出、其他地方)等,而无需重新编译程序。
如果这不是您的问题,并且您绝对确定您将始终希望向 stdout 输出相同的输出并且永远不想调整它(至少在没有重新编译的情况下),请务必继续使用cout
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.