代码拉取完成,页面将自动刷新
#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;
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。