繁体   English   中英

为什么使用 Logger 而不是 cout?

[英]Why use a Logger instead of cout?

在大多数开源 C++ 代码中,我可以看到使用了像 Google 日志库glog这样的记录器。 但是有什么好处呢? 我能找到的唯一优点:

  1. 日志记录是线程安全的,因此首选多线程
  2. 您可以选择严重程度

因此,如果我不进行多线程处理并且不需要严重性级别,那么使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM