日志器获取接口
通过两个函数,用于获取指定名称的日志器和root日志器。两个函数分别通过调用loggerManager的getInstance方法,获取单例的日志管理器对象,通过这种方式,借助日志管理器获取具体的日志器对象。
设计的主要目的,将日志器的获取与管理逻辑封装在LoggerMannner中,从而在调用的时候就不需要关注日志器的具体实现细节,只需要通过这个接口调用即可获取自己所需要的日志器。
Logger::ptr getLogger(const std::string &name) {
return loggerManager::getInstance().getLogger(name);
}
Logger::ptr rootLogger() {
return loggerManager::getInstance().rootLogger();
}
宏定义代理模式
代理模式的三重封装
- LOGD宏:记录调试级别的日志,将所有的日志记录工作代理交给LOG_DEBUG宏,同时指向使用root日志器
- LOG_DEBUG:进一步封装日志记录的调用过程,该代理对具体日志器对象的debug方法进行调用
- logger->debug:日志记录最终是日志器对象,debug方法执行,也就是具体实现日志输出的部分,用于处理格式化字符串并将日志消息记录到适当的输出地方
#define debug(fmt, ...) debug(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
#define info(fmt, ...