Я выполняю проект с некоторыми друзьями по очень ограниченному (относительно 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), но я думаю, что это слишком сложно и тяжело для наших потребностей и ресурсов.
Буду признателен за любые другие идеи! Заранее спасибо!