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

直接上代码

LogFile.h
//
//  LogFile.h
//  ftpz
//
//  Created by 胖胖的ALEX on 2017/10/26.
//
#ifndef FTP_LOGFILE_H
#define FTP_LOGFILE_H

class 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 
#include 

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删除失败



你可能感兴趣的:(C/C++)