代码拉取完成,页面将自动刷新
#pragma once
#include "noncopyable.h"
#include <string>
//为了方便调用日志类进行打印,直接定义宏函数
//调用格式:LOG_INFO("%s %d",arg1,arg2)
#define LOG_INFO(logmsgFormat, ...)\
do \
{\
Logger& logger = Logger::instance(); \
logger.setLogLevel(INFO); \
char buf[1024] = {0}; \
snprintf(buf,1024,logmsgFormat,##__VA_ARGS__);\
logger.log(buf);\
}while(0)
#define LOG_ERROR(logmsgFormat, ...)\
do \
{\
Logger& logger = Logger::instance(); \
logger.setLogLevel(ERROR); \
char buf[1024] = {0}; \
snprintf(buf,1024,logmsgFormat,##__VA_ARGS__);\
logger.log(buf);\
}while(0)
#define LOG_FATAL(logmsgFormat, ...)\
do \
{\
Logger& logger = Logger::instance(); \
logger.setLogLevel(FATAL); \
char buf[1024] = {0}; \
snprintf(buf,1024,logmsgFormat,##__VA_ARGS__);\
logger.log(buf);\
exit(-1); \
}while(0)
//用宏定义MUDEBUG控制一下是否需要输出调试信息
#ifdef MUDEBUG
#define LOG_DEBUG(logmsgFormat, ...)\
do \
{\
Logger& logger = Logger::instance(); \
logger.setLogLevel(DEBUG); \
char buf[1024] = {0}; \
snprintf(buf,1024,logmsgFormat,##__VA_ARGS__);\
logger.log(buf);\
}while(0)
#else
#define LOG_DEBUG(logmsgFormat, ...)
#endif
//定义日志级别,一般正常日志系统都有下面三个级别:
//1、INFO:打印流程日志
//2、ERROR:一般的小错误,不影响程序运行的日志
//3、FATAL:毁灭性的错误,导致程序直接终止的日志
//4、DEBUG:调试的日志
enum LogLevel{
INFO, //普通信息
ERROR, //错误信息
FATAL, //core信息
DEBUG //调试信息
};
//输出一个日志类,单例模式
class Logger: public noncopyable{
public:
//获取日志唯一的实例对象
static Logger& instance();
//设置日志级别
void setLogLevel(int level);
//写日志
void log(std::string msg);
private:
int logLevel_;//日志级别
Logger(){}
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。