2013-05-07 22 views
0

我在一些非常有限的(關於RAM存儲器)微控制器上與一些朋友進行了一個項目。我目前的任務是製作一個記錄器模塊。記錄器必須顯示「x; y; log-message」格式,其中「x」是日誌級別,「y」是類標識符(唯一整數)。到目前爲止,我的設計已經完成了,儘管我仍然遇到了問題,我可以從記錄器模塊獲取唯一的類ID,而不需要任何依賴(以某種方式)。用於記錄的類ID

我的第一個想法是(讓我們假設這是僞代碼):

class A : public Logger 
{ 
private: 
    unsigned short GetId() {return CLASS_ID_A;} 
}; 

class Logger 
{ 
public: 
    enum 
    { 
     CLASS_ID_A, CLASS_ID_B 
    }; 

    void Error (const char *msg, ...) 
    { 
     Log(LOG_LEVEL_ERROR, GetId(), msg, ...); 
    } 

protected: 
    unsigned short GetId() = 0; 
}; 

我不喜歡這不得不記錄所有的類都必須從記錄器類繼承。我也從log4cpp中看到了這個想法(Category類的多個實現),但我認爲這對我們的需求和資源來說太複雜和沉重。

我會欣賞任何其他的想法!提前致謝!

回答

0

一個簡單的方法是在Logger類中創建一個靜態的Log方法並使用它。

Logger::Log(LOG_LEVEL_ERROR, ...);