热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

一个简单的C++Log文本输出类

Log.h#ifndefLOG_H#defineLOG_H#include#include#include#inclu

// Log.h
#ifndef LOG_H
#define LOG_H#include
#include
<string>
#include

#include
using namespace std;/*** 用于输出log文件的类.*/
class Log
{
public:Log();~Log();bool Open(string strFileName);void Close();bool CommonLogInit(); //打开默认的log 文件void Enable();void Disable();string GetTimeStr();template void LogOut(const T& value){if (m_bEnabled){m_tOLogFile << value;}}template void LogOutLn(const T& value){if (m_bEnabled){m_tOLogFile < endl;}}void LogOutLn(){if (m_bEnabled){m_tOLogFile << endl;}}template 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 string ValueToStr(T value){ostringstream ost;ost << value;return ost.str();}
private:ofstream m_tOLogFile;bool m_bEnabled;
};
#endif//&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;
//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()
{time_t tNowTime;time(
&tNowTime);tm* tLocalTime &#61; localtime(&tNowTime);//得到日期的字符串string sDateStr &#61; ValueToStr(tLocalTime->tm_year&#43;1900) &#43; "-" &#43;ValueToStr(tLocalTime->tm_mon&#43;1) &#43; "-" &#43;ValueToStr(tLocalTime->tm_mday);return Open("Log_" &#43; sDateStr &#43; ".log");
}
void Log::Enable()
{m_bEnabled
&#61; true;
}
void Log::Disable()
{m_bEnabled
&#61; false;
}
//得到当前时间的字符串
string Log::GetTimeStr()
{time_t tNowTime;time(
&tNowTime);tm* tLocalTime &#61; localtime(&tNowTime);//"2011-07-18 23:03:01 ";string strFormat &#61; "%Y-%m-%d %H:%M:%S ";char strDateTime[30] &#61; {&#39;\0&#39;};strftime(strDateTime, 30, strFormat.c_str(), tLocalTime);string strRes &#61; strDateTime;return strRes;
}
//本Log类,用于一般简单的Log文本文件输出.//test: main.cpp
#include "Log.h"int main()
{Log mainLog;mainLog.CommonLogInit();mainLog
<"测试Log类." << endl;
}

 

转:https://www.cnblogs.com/chunyou128/archive/2012/07/08/2581890.html



推荐阅读
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • React基础篇一 - JSX语法扩展与使用
    本文介绍了React基础篇一中的JSX语法扩展与使用。JSX是一种JavaScript的语法扩展,用于描述React中的用户界面。文章详细介绍了在JSX中使用表达式的方法,并给出了一个示例代码。最后,提到了JSX在编译后会被转化为普通的JavaScript对象。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 小程序wxs中的时间格式化以及格式化时间和date时间互转
    本文介绍了在小程序wxs中进行时间格式化操作的问题,并提供了解决方法。同时还介绍了格式化时间和date时间的互相转换的方法。 ... [详细]
  • 本文介绍了使用Python编写购物程序的实现步骤和代码示例。程序启动后,用户需要输入工资,并打印商品列表。用户可以根据商品编号选择购买商品,程序会检测余额是否充足,如果充足则直接扣款,否则提醒用户。用户可以随时退出程序,在退出时打印已购买商品的数量和余额。附带了完整的代码示例。 ... [详细]
author-avatar
我叫叮当既小号
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有