log:
重写了一个阻塞队列,主要在原来的队列模板上加入了锁机制,以此来使得异步写入的时候保证临界资源访问没有问题
C++11以后,使用局部变量懒汉不用加锁
static Log *get_instance() {
static Log instance;
return &instance;
}
Log析构函数设置为虚函数
异步需要设置阻塞队列的长度,同步不需要设置
如果设置了max_queue_size,则设置为异步,异步时需要创建一个线程来进行异步写
flush_log_thread为回调函数,这里表示创建线程异步写日志
从阻塞队列中取出一个日志string,写入文件
Log主要有几部分:确定是异步写入还是同步写入(异步写入要创建线程并利用重写的deque,同时异步写的话有大小限制)、确定写入的格式、确定写入的级别、确定写入地方