实现了异步的日志,不消耗工作线程时间。
1. 创建日志线程对消息日志打印在文件上,利用条件变量作为线程通信的方式,并且用互斥锁保证消息队列的线程安全。
2. 采用单例设计模式。
3. 类的析构函数将负责处理所有存储消息,停止日志,然后做内存的释放,让用户使用简单方便,让日志跟进程的状态同步。
头文件
#pragma once
#include "lockqueue.h"
#include <bits/types/FILE.h>
#include <iostream>
#include <string>
#include <cstdio>
#include <mutex>
#include <condition_variable>
#include<queue>
#include<memory>
enum LogLevel
{
INFO, //普通信息
ERROR, //错误信息
};
//单例
//Mprpc框架日志系统
//定义宏
#define LOG_INFO(logmsgformat,...) \
do \
{\
Logger &logger = Logger::GetInstance();\
logger.SetLogLevel(INFO); \
char c[1024]={0};\
snprintf(c,1024,logmsgformat, ##__VA_ARGS__);\
logger.Log(c); \
}while(0);
#define LOG_ERR(logmsgformat,...) \
do \
{\
Logger &logger = Logger::GetInstance