0

我和一些朋友在一个非常有限的(关于 RAM 内存)微控制器上进行了一个项目。我目前的任务是制作一个记录器模块。记录器必须显示类似“x;y;log-message”的格式,其中“x”是日志级别,“y”是类标识符(唯一整数)。到目前为止,我的设计已经基本完成,尽管在从 logger 模块获取唯一类 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;
};

我不喜欢所有必须记录的类都必须继承自 Logger 类。我也从 log4cpp(Category 类的多个实现)中看到了这个想法,但我认为这对于我们的需求和资源来说太复杂和繁重了。

我将不胜感激任何其他想法!提前致谢!

4

1 回答 1

0

一种简单的方法是在 Logger 类中创建一个静态 Log 方法并使用它。

Logger::Log(LOG_LEVEL_ERROR, ...);
于 2013-05-07T05:50:17.947 回答