`
huangjun_mail
  • 浏览: 118749 次
  • 性别: 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++记录日志到文件里面

    2. **日志类设计**:创建一个名为`Logger`的类,该类负责实际的日志记录工作。这个类可以有一个内部成员变量,用于保存日志文件的文件流对象(`std::ofstream`)。 3. **初始化日志文件**:在程序启动时,`Logger`...

    c/c++Log日志类

    一个简单的C++日志类通常会包含以下关键功能: 1. **日志级别**:日志类应支持多种级别,如DEBUG、INFO、WARNING、ERROR和FATAL。这些级别允许开发人员根据需要控制日志输出的详细程度,例如,在生产环境中,可能只...

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

    - 更常见的是自定义日志类,如`CLogFile`,继承自`CFile`,并利用`CFile`的写入功能来保存日志信息到文件。 3. **自定义日志系统** - 创建一个日志类,包含方法如`WriteLog`,接收字符串参数,附加时间戳和其他...

    c++写日志文件类

    使用这个日志类,开发者可以在代码中轻松地插入日志记录,例如: ```cpp #include "logfile.h" Logger logger("app.log"); // 初始化日志类,指定日志文件为'app.log' logger.setLogLevel(Logger::INFO); // 设置...

    C++ 控制台日志类

    这里我们讨论的“C++ 控制台日志类”是自定义的一个日志系统,专用于在MFC(Microsoft Foundation Classes)应用程序中通过控制台窗口输出日志信息。 首先,我们来看`ConsoleLog.h`头文件。在这个文件中,你可能会...

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

    在Linux系统中,C++编写日志文件是常见的任务,特别是在开发系统软件或者服务时,为了追踪程序运行状态和错误信息,日志记录是必不可少的。本文将介绍一种简化自glog的日志功能,它专注于写入日志文件,不再包含glog...

    C++ 多线程日志记录

    这些文件可能定义了一个日志类,其中包含记录日志的方法,以及线程安全的数据结构(如队列)和同步原语(如信号量和互斥锁)。`readme.txt`文件则可能提供了关于如何使用这些类和函数的说明,例如如何初始化日志系统...

    简单的c++日志类

    本模块提供了一个简单的C++日志类,旨在简化日志输出,提高开发效率。我们将详细探讨这个日志类的设计思路、实现方式以及如何在实际项目中应用。 首先,日志类通常包含以下几个核心功能: 1. **日志级别**:日志类...

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

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

    C++日志记录类QTClogCodeSource

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

    C++ 封装的日志类

    首先,`Log.h`文件通常包含类的声明,定义了日志类的接口。这个类可能包含以下几个关键部分: 1. **类定义**:定义一个名为`Log`的类,通常包含私有成员变量来存储日志信息,如日志级别(如DEBUG、INFO、WARN、...

    一个好用的C++日志产生类

    日志类通常包括几个核心功能:记录不同级别的消息(如调试、信息、警告、错误和致命错误),提供时间戳,以及可能的自定义格式化选项。一个好的日志系统应该简单易用,同时又具备足够的灵活性以适应各种项目需求。...

    日志类一个简单的C++日志类

    在IT行业中,日志类是常见的工具,用于记录程序运行时的信息,帮助开发者在调试、问题定位和性能分析等方面提供重要线索。C++作为一种强大的系统编程语言,虽然没有内置的日志系统,但我们可以自己创建一个简单易用...

    一个好用的C++日志生成类

    首先,C++日志类的设计通常会包含以下几个关键特性: 1. **多级别日志**:日志系统通常支持多种日志级别,如DEBUG、INFO、WARNING、ERROR和FATAL,以适应不同场景的需求。开发者可以根据需要调整日志级别,过滤掉不...

    一个供C++使用的日志类,非常好用

    在C++中,一个日志类通常是一个封装了输出信息到日志文件的工具,它允许开发者在代码中插入特定的记录,这些记录随后会被写入到指定的日志文件中。这种类通常包括方法来设置日志级别(如DEBUG、INFO、WARNING、ERROR...

    c++ 打印log 日志到文件

    以下是一个简单的C++日志类框架示例: ```cpp class Logger { public: Logger(const std::string& logFilePath, size_t maxFileSize); void log(LogLevel level, const std::string& message); private: std::...

    实用安全的C++日志类

    总之,“实用安全的C++日志类”是一个在多线程或多进程环境下能够安全记录日志的工具,它利用锁机制保证并发访问的安全,通过文件命名策略实现进程间的隔离,并可能包含额外的文件访问安全措施。理解和实现这样的...

    c++封装日志类及源代码

    本教程将详细讲解如何在C++中封装一个日志类,以实现系统日志、运行日志和Debug日志的分类,并讨论如何通过调试开关控制日志打印,以及日志等级的划分和错误定位。 首先,我们需要理解日志类的基本结构。一个完整的...

    好用的C++日志产生类

    在C++中,我们可以创建一个自定义的日志类,通过重载输出流操作符()来实现类似printf的使用方式,使得记录日志更加直观。 标题“好用的C++日志产生类”表明这个类设计得既高效又易于使用,能够满足开发者的需求。...

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

    本文将详细介绍一个基于C++编写的多功能日志记录库,该库封装了日志记录功能,并以DLL动态链接库的形式提供,便于集成到各种项目中。 首先,"C++写的多功能记录日志文件"标题表明这个库是用C++编程语言实现的,C++...

Global site tag (gtag.js) - Google Analytics