今天,修改了以前的读写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);
}
}
分享到:
相关推荐
c++ 记录日志到文件
vc++ c++ mfc 日志 log 记录
打日志用的,经过了windows和linux下的测试,支持多线程,附上了实例,此实例在windows下运行只要加到win32控制台程序里就行了,记得去掉预编译头,在linux下测试,只要make 就行了,makefile已经在压缩包里了
QT实现单例日志记录类,采用宏调用形式打印日志,支持日志文件夹最大日志文件个数,支持设置日志记录大小,当文件夹日志数到达最大时主动删除最老日志文件--使用方式,直接包含类文件夹,代码中LOG("UI初始化完成1")...
主要介绍了linux系统中c++写日志文件功能,简化了glog,只保留了写日志文件的功能,只是改写了linux版本,需要的朋友可以参考下
使用该类可实现C++ 多线程日志的记录,创建了日志记录线程,使用日志等级、队列、信号量、临界区等方法实现记录,可在较高的实时性系统上完成日志记录。
该模块中简单给出了三种不同的日志记录格式,并且定义了三种log宏,方便快捷调用写入日志文件,是调试c++程序的利器
在vs2013上实现的标准C/C++日志记录(C++11). 分享出来给大家学了解。有更好方案可以沟通交流。
vc6、c++创建日志文件、记录日志 源代码
简便易用的C++日志类,按日期创建日志文件,按时间记录日志,可在多线程或多进程环境下放心使用。
附件是VS2010的工程,C++日志类,谷歌的东西,很好用,也很强大哦! glog简介 Google glog是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似,例: LOG(INFO) ; “LOG”宏为日志输出关键字...
一个简单的写log日志的c++代码,可以将日志写入文件用来记录程序调试信息。
这是一个我自己用C++编写的 log文件记录库,使用方便。
跨平台c++日志类log,很多产品级项目都要求在运行时记录日志,方便维护查询。本类是一个很好用的类,支持跨平台。
本资源是一个dll库,用C++编写,用于记录日志文件,自动生成带有日期的文件,使用方便,在头文件中有库的简单使用例子
这个日志类中包含了线程同步技术,因此可以安全的用在多线程中 3.在需要写日志的地方: //记录日志 g_statusLog.Init("Log.log");//取日志名字,若工程目录下没有这个文件,会自动创建 g_statusLog.PrintTime...
1、本资源使用C++实现写日志的类。 5、使用方法非常简单,只需要输入日志文件名称和要写的字符串就能记录日志;
日志系统是成熟软件中的一个重要组成部分,其记录软件的使用和运行行为,方便事后进行故障分析、数据统计等。 本日志模块的主旨是提供一个基于Qt框架,简单易用、可拓展性好、支持多种输出目标和格式的底层日志库,...
GLog是Google开发的一套日志输出框架。是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似,由于其具有功能强大、方便使用等特性,它被众多开源项目使用
本源码是前面上传日志文件库的源码,也不难,在公司做项目,为了方面,就写了这样一个库。想学习如何封装C++库的朋友可以参考下。具体的使用参考之前上传的库的使用