C++ log类
来源:互联网 发布:子域名共享session php 编辑:程序博客网 时间:2024/05/16 18:43
// Log.h#ifndef LOG_H#define LOG_H#include <fstream>#include <string>#include <sstream>#include <ctime>using namespace std;/** * 用于输出log文件的类. */class Log{public: Log(); ~Log(); bool Open(string strFileName); void Close(); bool CommonLogInit(string name); //打开默认的log 文件 void Enable(); void Disable(); string GetTimeStr(); template <typename T> void LogOut(const T& value) { if (m_bEnabled) { m_tOLogFile << value; } } template <typename T> void LogOutLn(const T& value) { if (m_bEnabled) { m_tOLogFile << value << endl; } } void LogOutLn() { if (m_bEnabled) { m_tOLogFile << endl; } } template <typename T> Log& operator<<(const T& value) { if (m_bEnabled) { m_tOLogFile << value; } return (*this); } Log& operator<<(ostream& (*_Pfn)(ostream&)) { if (m_bEnabled) { (*_Pfn)(m_tOLogFile); } return (*this); }private: template<typename T> string ValueToStr(T value) { ostringstream ost; ost << value; return ost.str(); }private: ofstream m_tOLogFile; bool m_bEnabled;};#endif//========================//Log.cpp#include "Log.h"Log::Log() :m_bEnabled(true){}Log::~Log(){}bool Log::Open(string sFileName){ m_tOLogFile.open(sFileName.c_str(), ios_base::out | ios_base::app); if( !m_tOLogFile ) { return false; } return true;}void Log::Close(){ if(m_tOLogFile.is_open()) { m_tOLogFile.close(); }}bool Log::CommonLogInit(string name){ time_t tNowTime; time(&tNowTime); tm* tLocalTime = localtime(&tNowTime); //得到日期的字符串 string sDateStr = ValueToStr(tLocalTime->tm_year+1900) + "-" + ValueToStr(tLocalTime->tm_mon+1) + "-" + ValueToStr(tLocalTime->tm_mday); return Open("e:\\log\\log"+ name+sDateStr + ".txt");}void Log::Enable(){ m_bEnabled = true;}void Log::Disable(){ m_bEnabled = false;}//得到当前时间的字符串string Log::GetTimeStr(){ time_t tNowTime; time(&tNowTime); tm* tLocalTime = localtime(&tNowTime); //"2011-07-18 23:03:01 "; string strFormat = "%Y-%m-%d %H:%M:%S "; char strDateTime[30] = {'\0'}; strftime(strDateTime, 30, strFormat.c_str(), tLocalTime); string strRes = strDateTime; return strRes;}//本Log类,用于一般简单的Log文本文件输出.//test: main.cpp#include "Log.h"int main(){ Log mainLog; mainLog.CommonLogInit(); mainLog << mainLog.GetTimeStr() << "测试Log类." << endl;}
0 0
- [C#]Log记录相关对应类
- [C/C++][Log]
- Android Native C Log
- C 调试LOG函数
- C LOG function
- Android C/CPP log
- Android C/CPP log
- C#Log日志
- C Self-study Log
- Android Native C Log
- log for c
- Android Native C Log
- Android Native C Log
- c-log windows
- C语言打印Log
- java log ,c /c++ log add function
- 一个小巧的C++Log输出到文件类
- Log类
- c/c++中一些细节问题总结
- 蓝桥练习 16进制转8进制
- HDU 4777 树状数组求区间内 与该区间都互质的数个数
- C语言-文件操作
- 【ios】IOS集合总结
- C++ log类
- tcpdump使用心得
- 强大的managed C++
- 在64位机器上使用LIBSVM编译时提示错误
- hibernate笔记 马士兵
- Java学习——数字格式化
- win7下cocos2d-x2.2.1最新版环境搭建
- XCode 5 调试项目常用到的初始配置参数
- 简易客户端连接配置连接数据库