网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

C++线程安全的日志接口-创新互联

C++ 线程安全的日志接口

线程不安全版本旧版(对接口的技术点进行详解)链接:https://blog.csdn.net/qq135595696/article/details/127467597

创新互联是一家专业提供江西企业网站建设,专注与成都网站制作、成都做网站、H5网站设计、小程序制作等业务。10年已为江西众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
Common.h
#pragma once

enum class NET_UV_LOG_TYPE {NET_UV_LOG_INFO,
    NET_UV_LOG_WARNING,
    NET_UV_LOG_ERROR,
    NET_UV_LOG_FATAL
};

//线程安全日志接口
void NetUVLog(NET_UV_LOG_TYPE type, const char* pFunc,
    int len, const char* format, ...);

//线程安全日志接口宏定义
#define NET_UV_LOG_INFO(format, ...) \
    NetUVLog(NET_UV_LOG_TYPE::NET_UV_LOG_INFO, __FUNCTION__,    \
        __LINE__, format,  ##__VA_ARGS__)

#define NET_UV_LOG_WARNING(format, ...) \
    NetUVLog(NET_UV_LOG_TYPE::NET_UV_LOG_WARNING, __FUNCTION__, \
        __LINE__, format,  ##__VA_ARGS__)

#define NET_UV_LOG_ERROR(format, ...) \
    NetUVLog(NET_UV_LOG_TYPE::NET_UV_LOG_ERROR, __FUNCTION__,   \
        __LINE__, format,  ##__VA_ARGS__)

#define NET_UV_LOG_FATAL(format, ...) \
    NetUVLog(NET_UV_LOG_TYPE::NET_UV_LOG_FATAL,__FUNCTION__,    \
        __LINE__, format,  ##__VA_ARGS__)
Common.cpp
#include "Common.h"

static const char* gs_netUvLogName[4] = {"INFO",
    "WARNING",
    "ERROR",
    "FATAL"
};

static std::mutex gs_printfMutex;


static void _SetColor(unsigned short forecolor = 4,
    unsigned short backgroudcolor = 0) {HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);             //获取缓冲区句柄
    SetConsoleTextAttribute(hCon, forecolor | backgroudcolor); //设置文本及背景色
}

//线程安全日志接口
void NET_UV::NetUVLog(NET_UV_LOG_TYPE type, const char* pFunc,
    int len, const char* format, ...) {va_list args;
    time_t  timer;
    char userData[LOG_BUF_LEN];
    char logTime[TIME_BUF_LEN];
    std::string logInfo;

    va_start(args, format);
    vsnprintf(userData, LOG_BUF_LEN, format, args);
    va_end(args);

    time(&timer);
    strftime(logTime, TIME_BUF_LEN, "%Y-%m-%d %H:%M:%S", localtime(&timer));

    logInfo = logTime;
    logInfo.append(" [NET-UV]-[");
    logInfo.append(gs_netUvLogName[(int)type]);
    logInfo.append("] ");

    //函数名
    logInfo.append("[");
    logInfo.append(pFunc);
    logInfo.append("] ");

    //行号
    logInfo.append("[");
    logInfo.append(std::to_string(len));
    logInfo.append("] ");

    logInfo.append(userData);

    //默认颜色
    _SetColor(FOREGROUND_INTENSITY | FOREGROUND_RED |
        FOREGROUND_GREEN | FOREGROUND_BLUE);
    if (type == NET_UV_LOG_TYPE::NET_UV_LOG_ERROR) {//设置红色
        _SetColor(FOREGROUND_INTENSITY, FOREGROUND_RED);
    }
    else if (type == NET_UV_LOG_TYPE::NET_UV_LOG_INFO) {//设置绿色
        _SetColor(FOREGROUND_INTENSITY, FOREGROUND_GREEN);
    }
    
    do {std::lock_guard__(gs_printfMutex);
        printf("%s", logInfo.c_str());
    } while (false);
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


分享题目:C++线程安全的日志接口-创新互联
分享地址:http://bjjierui.cn/article/dojsjd.html

其他资讯