日志器模块完成后,我们的日志系统差不多就算完成了,但是在用户使用方面仍然需要优化
如上所示,当我们需要从日志器管理器中获取日志器时需要用上面一长串的方式获取,而我们写入日志时还需要让用户用宏表示文件和行号,这是否不太合适呢?有什么改善方法吗?这里我们打算写一个mjwlog.h,其中用宏定义宏函数向用户提供一些日志系统的简易接口
#ifndef _M_MJWLOG_H_
#define _M_MJWLOG_H_
#include "logger.hpp"
//提供全局接口,用户可以通过接口获取指定名称日志器
namespace mjwlog
{
//获取指定名称日志器
Logger::ptr GetLogger(const std::string& loggername)
{
return LoggerManage::GetInstance().GetLogger(loggername);
}
//获取默认名称日志器
Logger::ptr GetDefaultLogger()
{
return LoggerManage::GetInstance().GetDeafultLogger();
}
//定义宏,优化logger->Debug(__FILE__,__LINE__,"%s","日志器测试");
#define debug(fmt,...) Debug(__FILE__,__LINE__,fmt,##__VA_ARGS__)
#define info(fmt,...) Info(__FILE__,__LINE__,fmt,##__VA_ARGS__)
#define warn(fmt,...) Warn(__FILE__,__LINE__,fmt,##__VA_ARGS__)
#define error(fmt,...) Error(__FILE__,__LINE__,fmt,##__VA_ARGS__)
#define fatal(fmt,...) Fatal(__FILE__,__LINE__,fmt,##__VA_ARGS__)
//定义宏通过宏函数直接进行标准输出打印
#define DEBUG(fmt,...) mjwlog::GetDefaultLogger()->debug(fmt,##__VA_ARGS__)
#define INFO(fmt,...) mjwlog::GetDefaultLogger()->info(fmt,##__VA_ARGS__)
#define WARN(fmt,...) mjwlog::GetDefaultLogger()->warn(fmt,##__VA_ARGS__)
#define ERROR(fmt,...) mjwlog::GetDefaultLogger()->error(fmt,##__VA_ARGS__)
#define FATAL(fmt,...) mjwlog::GetDefaultLogger()->fatal(fmt,##__VA_ARGS__)
}
#endif