今天,修改了以前的读写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);
}
}