加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Logger.h 1.94 KB
一键复制 编辑 原始数据 按行查看 历史
TheSea 提交于 2024-10-07 11:34 . 完成了EpollPoller的部分
#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(){}
};
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化