2013-05-07 2 views
0

Я выполняю проект с некоторыми друзьями по очень ограниченному (относительно RAM-памяти) микроконтроллеру. Моя текущая задача - создать модуль журнала. Регистратор должен отображать такой формат, как «x; y; log-message», где «x» - это уровень журнала, а «y» - это идентификатор класса (уникальный целочисленный номер). До сих пор я получил дизайн в значительной степени закончен, хотя у меня все еще возникают проблемы с тем, что я могу получить уникальный идентификатор класса из модуля журнала без какой-либо зависимости (так или иначе).Идентификатор класса для ведения журнала

Моя первая мысль (давайте предположим, что это псевдо-код):

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; 
}; 

мне не нравится, что все классы, которые должны войти, должны наследовать от класса Logger. Я также видел идею log4cpp (несколько реализаций класса Category), но я думаю, что это слишком сложно и тяжело для наших потребностей и ресурсов.

Буду признателен за любые другие идеи! Заранее спасибо!

ответ

0

Простым способом было бы создать метод статического журнала в классе Logger и использовать его.

Logger::Log(LOG_LEVEL_ERROR, ...); 
Смежные вопросы