幾天前,我在詢問我的 Logger 專案的操作員多載問題。現在我有另一個我無法解決的問題 - 可能是由于我的經驗不足。
首先 - 我的Logger物件(設計為單例物件)應該寫入與源代碼在同一目錄中創建的檔案。期望的用途是這樣的:
logger << "log message text";
所以我創建了一個單例物件logger,但我需要在第一次使用之前進行一些控制logger,例如,如果檔案已經存在,如果它是空的,等等。所有提供的成員函式我已經創建或我將創建。
重點是什么?在第一次和每次使用logger. 而且我希望它們是自動制作的,因此可能的用戶不必手動執行此操作。
所以,讓我們總結一下......假設我想第一次使用它,所以我將這一行放在我的代碼中:
logger << "Log something";
在它自己制作日志之前,我需要Logger該類檢查是否:
- 日志檔案已經存在
- 如果沒有,創建一個
- 如果是,找到結尾并繼續下一行。
uj5u.com熱心網友回復:
你從哪里Logger開始打開檔案?為什么不在打開檔案時進行這些檢查?
例如,這聽起來像是你應該在你Logger的建構式中處理的事情。
而且,與其定義一個全域logger物件,不如考慮static在你的類中定義一個方法Logger,例如:
class Logger {
private:
Logger() {
// perform checks here...
// open/create log file as needed...
}
public:
~Logger() {
// close log file...
}
static Logger& GetLogger() {
static Logger logger;
return logger;
}
// other methods/operators as needed...
};
...
Logger::GetLogger() << "Log something";
然后建構式在第一次被呼叫Logger之前不會運行。GetLogger()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/495530.html
