今天,修改了以前的读写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);
}
}
分享到:
相关推荐
2. **日志类设计**:创建一个名为`Logger`的类,该类负责实际的日志记录工作。这个类可以有一个内部成员变量,用于保存日志文件的文件流对象(`std::ofstream`)。 3. **初始化日志文件**:在程序启动时,`Logger`...
一个简单的C++日志类通常会包含以下关键功能: 1. **日志级别**:日志类应支持多种级别,如DEBUG、INFO、WARNING、ERROR和FATAL。这些级别允许开发人员根据需要控制日志输出的详细程度,例如,在生产环境中,可能只...
- 更常见的是自定义日志类,如`CLogFile`,继承自`CFile`,并利用`CFile`的写入功能来保存日志信息到文件。 3. **自定义日志系统** - 创建一个日志类,包含方法如`WriteLog`,接收字符串参数,附加时间戳和其他...
使用这个日志类,开发者可以在代码中轻松地插入日志记录,例如: ```cpp #include "logfile.h" Logger logger("app.log"); // 初始化日志类,指定日志文件为'app.log' logger.setLogLevel(Logger::INFO); // 设置...
这里我们讨论的“C++ 控制台日志类”是自定义的一个日志系统,专用于在MFC(Microsoft Foundation Classes)应用程序中通过控制台窗口输出日志信息。 首先,我们来看`ConsoleLog.h`头文件。在这个文件中,你可能会...
在Linux系统中,C++编写日志文件是常见的任务,特别是在开发系统软件或者服务时,为了追踪程序运行状态和错误信息,日志记录是必不可少的。本文将介绍一种简化自glog的日志功能,它专注于写入日志文件,不再包含glog...
这些文件可能定义了一个日志类,其中包含记录日志的方法,以及线程安全的数据结构(如队列)和同步原语(如信号量和互斥锁)。`readme.txt`文件则可能提供了关于如何使用这些类和函数的说明,例如如何初始化日志系统...
本模块提供了一个简单的C++日志类,旨在简化日志输出,提高开发效率。我们将详细探讨这个日志类的设计思路、实现方式以及如何在实际项目中应用。 首先,日志类通常包含以下几个核心功能: 1. **日志级别**:日志类...
打日志用的,经过了windows和linux下的测试,支持多线程,附上了实例,此实例在windows下运行只要加到win32控制台程序里就行了,记得去掉预编译头,在linux下测试,只要make 就行了,makefile已经在压缩包里了
QT实现单例日志记录类,采用宏调用形式打印日志,支持日志文件夹最大日志文件个数,支持设置日志记录大小,当文件夹日志数到达最大时主动删除最老日志文件--使用方式,直接包含类文件夹,代码中LOG("UI初始化完成1")...
首先,`Log.h`文件通常包含类的声明,定义了日志类的接口。这个类可能包含以下几个关键部分: 1. **类定义**:定义一个名为`Log`的类,通常包含私有成员变量来存储日志信息,如日志级别(如DEBUG、INFO、WARN、...
日志类通常包括几个核心功能:记录不同级别的消息(如调试、信息、警告、错误和致命错误),提供时间戳,以及可能的自定义格式化选项。一个好的日志系统应该简单易用,同时又具备足够的灵活性以适应各种项目需求。...
在IT行业中,日志类是常见的工具,用于记录程序运行时的信息,帮助开发者在调试、问题定位和性能分析等方面提供重要线索。C++作为一种强大的系统编程语言,虽然没有内置的日志系统,但我们可以自己创建一个简单易用...
首先,C++日志类的设计通常会包含以下几个关键特性: 1. **多级别日志**:日志系统通常支持多种日志级别,如DEBUG、INFO、WARNING、ERROR和FATAL,以适应不同场景的需求。开发者可以根据需要调整日志级别,过滤掉不...
在C++中,一个日志类通常是一个封装了输出信息到日志文件的工具,它允许开发者在代码中插入特定的记录,这些记录随后会被写入到指定的日志文件中。这种类通常包括方法来设置日志级别(如DEBUG、INFO、WARNING、ERROR...
以下是一个简单的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++中封装一个日志类,以实现系统日志、运行日志和Debug日志的分类,并讨论如何通过调试开关控制日志打印,以及日志等级的划分和错误定位。 首先,我们需要理解日志类的基本结构。一个完整的...
在C++中,我们可以创建一个自定义的日志类,通过重载输出流操作符()来实现类似printf的使用方式,使得记录日志更加直观。 标题“好用的C++日志产生类”表明这个类设计得既高效又易于使用,能够满足开发者的需求。...
本文将详细介绍一个基于C++编写的多功能日志记录库,该库封装了日志记录功能,并以DLL动态链接库的形式提供,便于集成到各种项目中。 首先,"C++写的多功能记录日志文件"标题表明这个库是用C++编程语言实现的,C++...