`
huangjun_mail
  • 浏览: 115285 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C++ 记录日志类

阅读更多

 今天,修改了以前的读写IC卡Activex组件,对于组件添加了记录日志类。

 // LogManager.h: interface for the LogManager class.

//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_LOGMANAGER_H__0A40E9CA_BE55_427D_ADE9_C16E706B3430__INCLUDED_)
#define AFX_LOGMANAGER_H__0A40E9CA_BE55_427D_ADE9_C16E706B3430__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include<ctime>

class LogManager  
{
public:
	LogManager();
	virtual ~LogManager();
public:
	void WriteLog(TCHAR* logs);
};

#endif // !defined(AFX_LOGMANAGER_H__0A40E9CA_BE55_427D_ADE9_C16E706B3430__INCLUDED_)

 

 // LogManager.cpp: implementation of the LogManager class.

//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "LogManager.h"
#define BUFSIZE 4096
#define DATELEN 64 
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

LogManager::LogManager()
{

}

LogManager::~LogManager()
{

}

void LogManager::WriteLog(TCHAR* logs)
{

	CHAR sBuff[BUFSIZE];
	CHAR sPathBuff[MAX_PATH];//日志文件路径
	CHAR* p;
	CHAR date[DATELEN]; //日期
	CHAR* CARD_FILE_FLAG = "CFCC_CARD_FILE_";
	CHAR* CARD_FILE_EXTENDS_FLAG = ".log";
	//-------------获取临时文件路径----------------
	time_t t = time(0); 
	strftime(date,9, "%Y%m%d",localtime(&t));
	// Get the temp path
	GetTempPath(MAX_PATH,   // length of the buffer
		sPathBuff);      // buffer for path 
	int icurrPathLen = strlen(sPathBuff);
	int ifileFlagLen = strlen(CARD_FILE_FLAG);
	int ifileExtendsLen = strlen(CARD_FILE_EXTENDS_FLAG);
	p = &sPathBuff[icurrPathLen];
	memcpy(p,CARD_FILE_FLAG,ifileFlagLen);
	p = p + ifileFlagLen;
	memcpy(p,date,8);
	p = p + 8;
	memcpy(p,CARD_FILE_EXTENDS_FLAG,ifileExtendsLen + 1);
	//---------------写日志---------------------------
	HANDLE hFile = CreateFile(sPathBuff, GENERIC_READ|GENERIC_WRITE, 
		FILE_SHARE_READ | FILE_SHARE_WRITE,
		NULL,
		OPEN_ALWAYS, 
		0, 
		0);		
	if (hFile != INVALID_HANDLE_VALUE)
	{
		LONG lDistance = 0;
		DWORD nReads = 0;
		SetFilePointer(hFile,lDistance,NULL,FILE_END);
		//begin write log
		//write date
		time_t currentT = time(0); 
		strftime(date,sizeof(date), "%c---",localtime(&t));
		WriteFile(hFile,date,strlen(date),&nReads,NULL);
		//write log
		strcpy(sBuff,logs);
		WriteFile(hFile,sBuff,strlen(logs),&nReads,NULL);
		WriteFile(hFile,"\r\n",2,&nReads,NULL);//回车换行
		
		FlushFileBuffers(hFile);
		CloseHandle(hFile); 
	}
}
 
分享到:
评论
1 楼 piao_bo_yi 2010-11-30  
似乎单例+静态方法比较好。

相关推荐

    c++记录日志到文件里面

    c++ 记录日志到文件

    vc++ c++ mfc 日志 log 记录

    vc++ c++ mfc 日志 log 记录

    c/c++ 记录日志,支持windows和linux,支持多线程

    打日志用的,经过了windows和linux下的测试,支持多线程,附上了实例,此实例在windows下运行只要加到win32控制台程序里就行了,记得去掉预编译头,在linux下测试,只要make 就行了,makefile已经在压缩包里了

    C++日志记录类QTClogCodeSource

    QT实现单例日志记录类,采用宏调用形式打印日志,支持日志文件夹最大日志文件个数,支持设置日志记录大小,当文件夹日志数到达最大时主动删除最老日志文件--使用方式,直接包含类文件夹,代码中LOG("UI初始化完成1")...

    linux系统中c++写日志文件功能分享

    主要介绍了linux系统中c++写日志文件功能,简化了glog,只保留了写日志文件的功能,只是改写了linux版本,需要的朋友可以参考下

    C++ 多线程日志记录

    使用该类可实现C++ 多线程日志的记录,创建了日志记录线程,使用日志等级、队列、信号量、临界区等方法实现记录,可在较高的实时性系统上完成日志记录。

    简单的c++日志类

    该模块中简单给出了三种不同的日志记录格式,并且定义了三种log宏,方便快捷调用写入日志文件,是调试c++程序的利器

    C++单例日志类(标准C/C++)

    在vs2013上实现的标准C/C++日志记录(C++11). 分享出来给大家学了解。有更好方案可以沟通交流。

    vc6、c++创建日志文件、记录日志 源代码

    vc6、c++创建日志文件、记录日志 源代码

    实用安全的C++日志类

    简便易用的C++日志类,按日期创建日志文件,按时间记录日志,可在多线程或多进程环境下放心使用。

    C++日志类libglog使用

    附件是VS2010的工程,C++日志类,谷歌的东西,很好用,也很强大哦! glog简介 Google glog是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似,例: LOG(INFO) ; “LOG”宏为日志输出关键字...

    用c++写的 log 日志文件

    一个简单的写log日志的c++代码,可以将日志写入文件用来记录程序调试信息。

    c++ 日志文件(log)记录库开源

    这是一个我自己用C++编写的 log文件记录库,使用方便。

    跨平台c++日志类log

    跨平台c++日志类log,很多产品级项目都要求在运行时记录日志,方便维护查询。本类是一个很好用的类,支持跨平台。

    C++写的多功能记录日志文件

    本资源是一个dll库,用C++编写,用于记录日志文件,自动生成带有日期的文件,使用方便,在头文件中有库的简单使用例子

    c++日志产生类

    这个日志类中包含了线程同步技术,因此可以安全的用在多线程中 3.在需要写日志的地方: //记录日志 g_statusLog.Init("Log.log");//取日志名字,若工程目录下没有这个文件,会自动创建 g_statusLog.PrintTime...

    C++ 写日志函数

    1、本资源使用C++实现写日志的类。 5、使用方法非常简单,只需要输入日志文件名称和要写的字符串就能记录日志;

    C++通用日志系统Logger

    日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等。 本日志模块的主旨是提供一个基于Qt框架,简单易用、可拓展性好、支持多种输出目标和格式的底层日志库,...

    c++开源日志库GLOG

    GLog是Google开发的一套日志输出框架。是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似,由于其具有功能强大、方便使用等特性,它被众多开源项目使用

    C++写的多功能记录日志文件 源码

    本源码是前面上传日志文件库的源码,也不难,在公司做项目,为了方面,就写了这样一个库。想学习如何封装C++库的朋友可以参考下。具体的使用参考之前上传的库的使用

Global site tag (gtag.js) - Google Analytics