2 Star 6 Fork 5

Eric Ling / sponge

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
logger.h 1.81 KB
一键复制 编辑 原始数据 按行查看 历史
#pragma once
#include <stdio.h>
#include <string.h>
#include <string>
#include "blockingqueue.h"
// 使用示例
// LOG_INFO("xxx %d %s", 20, "xxxx")
#define LOG_INFO(logmsgformat, ...) \
do { \
Logger &logger = Logger::GetInstance(); \
char buffer[2048 + 2048] = {0}; \
snprintf(buffer, 2048, "[INFO] %s:%d | ", __FILE__, __LINE__); \
char msg[2048] = {0}; \
snprintf(msg, 2048, logmsgformat, ##__VA_ARGS__); \
strcat(buffer, msg); \
logger.Log(buffer); \
} while (0)
#define LOG_ERROR(logmsgformat, ...) \
do { \
Logger &logger = Logger::GetInstance(); \
char buffer[2048 + 2048] = {0}; \
snprintf(buffer, 2048, "[ERROR] %s:%d | ", __FILE__, __LINE__); \
char msg[2048] = {0}; \
snprintf(msg, 2048, logmsgformat, ##__VA_ARGS__); \
strcat(buffer, msg); \
fprintf(stderr, "%s\n\n", buffer); \
logger.Log(buffer); \
} while (0)
// 线程安全的异步日志工具类
class Logger {
public:
static Logger &GetInstance();
void Log(std::string msg);
private:
BlockingQueue<std::string> _logQue; // 线程安全的日志队列
Logger();
Logger(const Logger &) = delete;
Logger(Logger &&) = delete;
};
1
https://gitee.com/ericling666/sponge.git
git@gitee.com:ericling666/sponge.git
ericling666
sponge
sponge
main

搜索帮助