[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删除失败
相关文章推荐
- VC-Logger 是一个简单易用的 C++ 程序通用日志组件
- 一个简单的日志函数C++
- 一个简单可用的C++日志类
- 一个简单的c++写日志类
- nlog-简单易用的C++日志,线程安全、异步、高性能
- C++实现简单日志类
- 简单的C++加载jvm实现--简单的日志输出--JAVA端程序
- 简单易用的C++日志类
- c++实现简单的日志功能
- 简单的日志文件操作类 (C#)
- 简单易用的日志c++版本
- C++实现一个简单的异常日志记录类
- C++简单的打印日志接口
- C++实现一个简单的异常日志记录类
- c++ windows下的简单的日志输出DebugPrintf
- C++实现的一个简单的日志库
- C++ 简单的日志类
- C++简单日志记录方法
- C++最简单的日志库
- 一个简单的c++写日志类