我正在爲數據庫引擎開發基於磁盤的樹,並且我喜歡爲我的程序維護一個日誌文件。我基本上需要日誌程序的兩種功能。它必須允許我將消息記錄到日誌文件中,並且還必須寫入任何將它作爲參數傳遞到日誌文件的變量。我只需要這兩個功能。第一個實現相當簡單,但我很難實現第二個。我想將任何類型的任意數量的參數傳遞給日誌程序,將它寫入日誌文件。我嘗試使用變量參數函數來實現第二個函數,但問題是我們必須知道正在傳遞的變量的類型。我相信肯定有辦法做到這一點。任何人都可以啓發我嗎?在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. 如何實現Node.js應用程序日誌記錄到CloudWatch
- 2. 如何最小化監控請求的日誌記錄?
- 3. 程式化控制檯日誌記錄
- 4. 數據庫日誌記錄在日誌記錄過程
- 5. 線程實時日誌記錄
- 6. 實時日誌記錄
- 7. 用parse.com上的Twitter c#實現日誌記錄
- 8. 如何實現log4j日誌記錄到現有的J2EE Struts Web應用程序?
- 9. 多線程的小應用程序和日誌記錄
- 10. 將日誌記錄添加到實用程序包中
- 11. 如何在log4cplus中實現異步日誌記錄
- 12. 如何在枚舉單例中實現日誌記錄?
- 13. 在T-SQL事務中實現日誌記錄的最佳方式是什麼?
- 14. 如何打開C#中的程序集綁定日誌記錄?
- 15. 日誌記錄應用程序塊
- 16. Java應用程序+日誌記錄
- 17. web2py應用程序日誌記錄
- 18. 。應用程序日誌記錄
- 19. SolrJetty日誌記錄 - 如何讓自定義日誌格式化程序工作?
- 20. netbeans日誌記錄教程
- 21. 有關爲小型實用程序啓用基本日誌記錄的建議
- 22. Java日誌記錄全局日誌程序
- 23. Windows Azure日誌記錄:WADLogsTable作爲應用程序日誌?
- 24. Python日誌記錄模塊格式化程序
- 25. GCP日誌記錄驅動程序:未能初始化
- 26. 如何在SQL存儲過程中實現日誌記錄和錯誤報告?
- 27. 在Python中實現多線程的自定義輸出日誌記錄
- 28. 多個Web應用程序的日誌記錄實踐
- 29. 多個應用程序實例日誌記錄
- 30. 從堆中最小的日誌記錄中創建排序陣列
你是否也想過爲每個傳遞的變量傳遞第二個參數,該變量包含變量的類型? –
你如何計劃記錄一個任意類型的變量?這組可能的類型是否有任何限制?例如,他們是否必須有'ostream&operator <<(ostream&,T)'超載? – Useless