[英]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.