[C/C++]简单的C++日志操作类

来源:互联网 发布:安卓看广告赚钱软件 编辑:程序博客网 时间:2024/05/16 14:39

直接上代码

LogFile.h
////  LogFile.h//  ftpz////  Created by 胖胖的ALEX on 2017/10/26.//#ifndef FTP_LOGFILE_H#define FTP_LOGFILE_Hclass LogFile{public:LogFile();~LogFile();typedef enum enLogLevel {LOG_DEBUG = 1,LOG_INFO,LOG_ERROR,LOG_WARN,LOG_FATAL}LogLevel;void writeLog(int logLevel, char* pLogFormat);void debug(char* pLogFormat);void info(char* pLogFormat);void warn(char* pLogFormat);void error(char* pLogFormat);void fatal(char* pLogFormat);private:char m_cLastLogTime[32];char m_cLogFileName[1024];};#endif // !FTP_LOGFILE_H

LogFile.cpp
#include "stdafx.h"#include "LogFile.h"#include <time.h>#include <iostream>const char LogTip[][8] = { "", "Debug", "Info", "Warn", "Error", "Fatal"};LogFile::LogFile(){memset(m_cLastLogTime, 0, 32);memset(m_cLogFileName, 0, 1024);char* p = std::strrchr(m_cLogFileName, '\\');time_t tmNow = time(NULL);strftime(m_cLastLogTime, 32, "%Y-%m-%d %H:%M:%S", localtime(&tmNow));strncat(m_cLogFileName, m_cLastLogTime, 10);strcat(m_cLogFileName, ".log");}LogFile::~LogFile(){}void LogFile::writeLog(int logLevel, char* pLogFormat){char logTxt[2048];memset(logTxt, 0, sizeof(logTxt));char szDate[32] = { 0 };time_t tmNow = time(NULL);strftime(szDate, 32, "%Y-%m-%d %H:%M:%S", localtime(&tmNow));if (strncmp(szDate, m_cLastLogTime, 10) != 0)//一天一个文件{char* p = strrchr(m_cLogFileName, '\\');strncat(m_cLogFileName, szDate, 10);strcat(m_cLogFileName, ".log");}sprintf(logTxt, "%s : [%s] %s\n", szDate, LogTip[logLevel], pLogFormat);FILE* pFile;pFile = fopen(m_cLogFileName, "a+");if (pFile != NULL){fputs(logTxt, pFile);}fclose(pFile);}void LogFile::debug(char* pLogFormat){writeLog(LOG_DEBUG, pLogFormat);}void LogFile::info(char* pLogFormat){writeLog(LOG_INFO, pLogFormat);}void LogFile::warn(char* pLogFormat){writeLog(LOG_WARN, pLogFormat);}void LogFile::error(char* pLogFormat){writeLog(LOG_ERROR, pLogFormat);}void LogFile::fatal(char* pLogFormat){writeLog(LOG_FATAL, pLogFormat);}

使用方法
LogFile *m_pLog = new LogFile();m_pLog->debug("SOCKET无法访问");m_pLog->info("SOCKET无法访问");m_pLog->error("SOCKET无法访问");m_pLog->fatal("SOCKET无法访问");delete m_pLog;m_pLog = NULL;

自动生成当天日期的log日志文件,内容如下:
2017-10-27 19:51:19 : [Warn] 本地文件用户需求调查单2016年10月17日 - Copy.zip删除失败2017-10-27 19:51:36 : [Warn] 本地文件用户需求调查单2016年10月17日 - Copy.zip删除失败2017-10-27 19:51:49 : [Warn] 本地文件用户需求调查单2016年10月17日 - Copy.zip删除失败2017-10-27 19:52:02 : [Warn] 本地文件用户需求调查单2016年10月17日 - Copy.zip删除失败2017-10-27 19:52:21 : [Warn] 本地文件用户需求调查单2016年10月17日 - Copy.zip删除失败2017-10-27 19:52:34 : [Warn] 本地文件用户需求调查单2016年10月17日 - Copy.zip删除失败2017-10-27 19:52:47 : [Warn] 本地文件用户需求调查单2016年10月17日 - Copy.zip删除失败