您的位置:首页 > 编程语言 > C语言/C++

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

2017-10-27 20:53 218 查看

直接上代码

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 <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删除失败
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: