[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删除失败
阅读全文
0 0
- [C/C++]简单的C++日志操作类
- 简单的日志文件操作类 (C#)
- C简单的配置文件操作
- 【C#】最简单的写日志DEMO
- C语言简单的日志宏打印
- C语言实现简单的日志封装
- C#Winform中保存配置信息App.Config的操作和简单日志操作
- C语言日志操作类实例
- C++Vector简单操作
- c#MQ简单操作
- 【C#-Hashtable简单操作】
- c简单位操作
- C程序的日志类
- c简单实现日志记录
- log日志:简单的log日志输出(C++)
- C++-类的操作
- c的日志库
- 转载:C/MFC - 文本文件的简单操作
- ffmpeg 的时间
- Leetcode#49. Group Anagrams
- jq树形菜单效果
- 瀑布流
- 线性回归(Linear Regression)
- [C/C++]简单的C++日志操作类
- 在ubuntu中安装Docker Compose
- fork()创建子进程
- java SE 学习笔记2
- 线性回归、最小二乘法、对数几率回归
- Idea中使用github的标签(tag)
- 根据原生JS封装函数,根据传递的选择器查找对应的元素以及解决getElementsByClassName() 兼容问题
- rvest爬虫及案例分析
- FFMPEG录屏软件开发之编码AAC