简单的Logger
来源:互联网 发布:大学数据新闻比赛 编辑:程序博客网 时间:2024/06/07 01:46
C++简单的Logger
第一次用markdown编辑,感觉确实很好用。做了下楼赛的题目,下面做做笔记留下标记学习。
- 主要知识点
- 单例模式
- 智能指针
easyLogger.h
#pragma once#include <memory>#include <ctime>#include <iostream>#include <fstream>using namespace std;class easyLogger{public: static easyLogger *myInst(){ if (NULL == _instance.get()){ _instance.reset(new easyLogger); } return _instance.get(); } void Log(const string& logInfo);private: easyLogger(void){} virtual ~easyLogger(void){} friend class auto_ptr<easyLogger>; static auto_ptr<easyLogger> _instance;};// 初始化_instanceauto_ptr<easyLogger> easyLogger:: _instance;void easyLogger::Log(const string& logInfo) { ofstream ofs; time_t t = time(0); char tmp[64]; // [2017.07.12 13:50:36 Wednesday] strftime(tmp, sizeof(tmp), "[%Y.%m.%d %X %A]", localtime(&t)); // 写easyLogger.log文件 ofs.open("shiyanloulogger.log",ofstream::app); ofs.write(logInfo.c_str(), logInfo.size()); ofs << tmp << endl; ofs.close();}
loggertest.cpp
#include "easyLogger.h"int main() { easyLogger::myInst()->Log("logger info"); return 0;}
- 1.单例模式三个关键点:
- 1)私有的静态实例对象 private static instance
- 2)私有的构造函数 private Singleton()
- 3)公有的静态访问实例对象的方法 public static Singleton getInstance()
类的静态成员变量必须在类外进行初始化
详见:http://blog.csdn.net/ayj12345/article/details/78551260
- 2.智能指针
- C++中指针申请内存,new/delete由用户决定对象的生命期。而智能指针是对普通指针进行封装,使得智能指针能方便地管理一个对象的生命期,自动执行对象的释放,实现内存的自动回收,也有说智能指针为了垃圾回收,其实都是一个意思。
- 智能指针一个关键是使用引用计数用于对象生存期控制。每次创建类的新对象时,初始化指针并将引用计算置1;党对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;对一个对象进行赋值时,赋值操作符减少左操作数所指对象的引用计数(如果引用计数减至0,则删除对象),并增加右操作数所指对象的引用计数;调用析构函数时,析构函数减少引用计数(如果引用计数减至0,则删除对象)。
- auto_ptr常用成员函数:
- get() 返回auto_ptr指向的那个对象的内存地址。
- reset() 重新设置auto_ptr指向的对象。
- 这里还有一个地方:fiend class auto_ptr;
将auto_ptr作为easyLogger类的友元,这样auto_ptr类能访问easyLogger类的私有成员。
参考:
- 楼赛12期题目
- https://www.cnblogs.com/lanxuezaipiao/p/4132096.html
阅读全文
0 0
- 简单的Logger类
- 简单的Logger
- Android 简单的Logger 日志系统实现
- 简单实用的js调试logger组件
- 简单实用的js调试logger组件
- Android 日志库 Logger的简单使用
- python中的简单logger
- Java-Logger简单使用
- 简单了解LOGGER.debug
- 一个简单、漂亮、功能强大的Android日志程序:logger
- 一个简单、漂亮、功能强大的Android日志程序:logger
- 一个简单、漂亮、功能强大的Android日志程序:logger
- Android简单好用的日志工具---Logger
- 一个简单、漂亮、功能强大的Android日志程序:logger
- 一个简单、漂亮、功能强大的Android日志程序:logger
- Logger 超简单的 Android 日志输出工具
- 一个简单、漂亮、功能强大的Android日志程序:logger
- Logger---使你的日志更简单漂亮强大!
- i.MX6UL -- Linux系统移植过程详解
- 《Java并发编程的艺术》第三章·附一——双重检查锁定与延迟初始化
- 字符串转换为浮点数
- 软件系统架构通俗理解之一:同步、异步、阻塞、非阻塞
- Unity3D之组合按键
- 简单的Logger
- 关于字符编码,你所需要知道的(ASCII,Unicode,Utf-8,GB2312…)
- linux 命令less
- python核心编程第二版第一章学习笔记
- Unity的转盘代码
- 127.0.0.1和0.0.0.0地址的区别
- 定时器Timer以及TimerTask
- C# 类型转换 (TryParse)
- 域名跳转