[C/C++]簡単なC++ログ操作クラス
3089 ワード
ダイレクトコード
LogFile.h
LogFile.cpp
使用方法
当日の日付のログ・ファイルを自動的に生成します.内容は次のとおりです.
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
", 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;
当日の日付のログ・ファイルを自動的に生成します.内容は次のとおりです.
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