我正在爲數據庫引擎開發基於磁盤的樹,並且我喜歡爲我的程序維護一個日誌文件。我基本上需要日誌程序的兩種功能。它必須允許我將消息記錄到日誌文件中,並且還必須寫入任何將它作爲參數傳遞到日誌文件的變量。我只需要這兩個功能。第一個實現相當簡單,但我很難實現第二個。我想將任何類型的任意數量的參數傳遞給日誌程序,將它寫入日誌文件。我嘗試使用變量參數函數來實現第二個函數,但問題是我們必須知道正在傳遞的變量的類型。我相信肯定有辦法做到這一點。任何人都可以啓發我嗎?在C++中實現最小化日誌記錄程序
0
A
回答
1
log4C++提供您正在查找的功能。
如果這對你來說太重了,你可以使用模板做類似的事情。喜歡的東西:
class log
{
private:
std::ostream& stream;
public:
log(std::ostream& src) : stream(src) {}
...
std::ostream& getStream() { return stream; }
}
template <typename T> log& operator<<(log&, const T& val)
{
log.getStream() << val;
return log;
}
這裏log::stream
是您爲輸出定義爲一個文件,到控制檯或任何部分std::ostream
實例。您可以通過區分不同類型的日誌記錄事件來讓它更有趣。
0
看一看這個簡單的日誌系統從DOBS博士的文章的實現:http://drdobbs.com/cpp/201804215
它是基於模板的,有日誌記錄級別(不運行時發生的任何開銷,如果不需要的話)和是小
相關問題
- 1. 實現多進程日誌記錄的最佳方式(C++)
- 2. 實現線程安全日誌記錄
- 3. Java小應用程序日誌記錄
- 4. 如何在工作流程中實現日誌記錄
- 5. 如何實現Node.js應用程序日誌記錄到CloudWatch
- 6. 在Golang中實現最小化記錄器
- 7. 日誌記錄設置最佳實踐
- 8. android - 如何實現日誌記錄
- 9. WCF實現簡單日誌記錄
- 10. 如何最小化監控請求的日誌記錄?
- 11. C++中模塊化編程中的可檢索日誌記錄
- 12. 如何在java程序中實現SQLite的預寫式日誌記錄
- 13. 在Flask中簡化日誌記錄
- 14. 在3層桌面應用程序中實現錯誤日誌記錄的最實用的地方是什麼?
- 15. 程式化控制檯日誌記錄
- 16. 數據庫日誌記錄在日誌記錄過程
- 17. 線程實時日誌記錄
- 18. 實時日誌記錄
- 19. 用parse.com上的Twitter c#實現日誌記錄
- 20. 配置/初始化程序中的Rails日誌記錄
- 21. 如何實現log4j日誌記錄到現有的J2EE Struts Web應用程序?
- 22. 多線程的小應用程序和日誌記錄
- 23. 將日誌記錄添加到實用程序包中
- 24. 如何在Go庫中實現慣用日誌記錄?
- 25. 如何在腳本中實現日誌記錄
- 26. 如何在golang中實現基於級別的日誌記錄?
- 27. 在Corona SDK中實現事件日誌記錄
- 28. 如何在log4cplus中實現異步日誌記錄
- 29. 如何在枚舉單例中實現日誌記錄?
- 30. 如何使用rails實現在rails中的日誌記錄?
你是否也想過爲每個傳遞的變量傳遞第二個參數,該變量包含變量的類型? –
你如何計劃記錄一個任意類型的變量?這組可能的類型是否有任何限制?例如,他們是否必須有'ostream&operator <<(ostream&,T)'超載? – Useless