C/C++ 簡單的Log日志


最近寫了一個動態鏈接庫提供給C#界面開發的同事調用。為了方便調試輸出,用C/C++的標准庫API編寫了一個Log日志庫。

讀取本地時間作為Log文件名,一天一個文件,定義一個LOG_LEVEL,一共分為五個級別。


#include <iostream>
#include <fstream>
#include <time.h>

typedef enum enLogLevel {
    LOG_DEBUG = 1,
    LOG_INFO,
    LOG_ERROR,
    LOG_WARN,
    LOG_FATAL
}LogLevel;


const char LogTip[][8] = { "","Debug","Info","Error","Warn","Fatal" };


void getLogFileName(string &logFileName)
{

    time_t t = time(0);
    char tmp[32] = { NULL };
    strftime(tmp, sizeof(tmp), "%Y-%m-%d", localtime(&t));
    strcat(tmp, ".log");
    char path[50] = "LogFile/";
    strcat(path, tmp);
    logFileName = path;
}
void writeLog(int logLevel, const char *pLogFormat)
{

    string logFileName;
    getLogFileName(logFileName);

    std::ofstream    OsWrite(logFileName, std::ofstream::app);
    char logTxt[2048];
    memset(logTxt, 0, sizeof(logTxt));

    time_t t = time(0);
    char date[32] = { NULL };
    strftime(date, sizeof(date), "%Y-%m-%d %H:%M:%S", localtime(&t));

    sprintf(logTxt, "%s : [%s] %s\n", date, LogTip[logLevel], pLogFormat);
    OsWrite << logTxt;
    OsWrite << std::endl;
    OsWrite.close();
}

 

使用方法:

int main(){

  writeLog(LOG_DEBUG, "debug...!");

  writeLog(LOG_ERROR, "error....!");

  writeLog(LOG_WARN, "warnning...!");

  writeLog(LOG_FATAL, "fatal!...");

  writeLog(LOG_INFO, "info!...");

}

return 0;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM