Log日志记录类

自己写的一个日志记录类,记录一下

Logout.h

#pragma once
class CLogout
{
public:
	CLogout(void);
	~CLogout(void);

	void Logout(char* msg, char* msg2=NULL, char*msg3=NULL);

private:
	bool bLogout;
	char szLogFilePath[MAX_PATH];
	char szMsg[MAX_PATH*2];
};

Logout.cpp

#include "StdAfx.h"
#include "Logout.h"
#include <time.h>
#include <stdarg.h>

#pragma comment (lib, "Shell32.lib")

CLogout::CLogout(char* logName)
{
	
	GetModuleFileNameA(NULL, this->szLogFilePath, MAX_PATH);
	char * pos = strrchr(szLogFilePath, '\\');
	*(pos+1) = 0;

	strcat_s(szLogFilePath, logName);

// 	if (SHGetSpecialFolderPathA(NULL, szLogFilePath, CSIDL_APPDATA, TRUE))
// 	{
// 		strcat_s(szLogFilePath, "\\adbmgr\\");
// 		BOOL b = CreateDirectoryA(szLogFilePath, NULL);
// 
// 		if (b || GetLastError() == ERROR_ALREADY_EXISTS)
// 		{
// 			strcat_s(szLogFilePath, "adbmgr.log");
// 			bLogout = true;
// 		}
// 	}

	bLogout = true;
	
}


CLogout::~CLogout(void)
{
}


void CLogout::Logout(char* pszFormat, ...)
{
	if (bLogout)
	{
		FILE* fp;
		fopen_s(&fp, szLogFilePath, "a+");

		if (fp)
		{

			va_list args; 
			va_start(args, pszFormat); //一定要“...”之前的那个参数
			

			time_t t = time(0);
			char tmp[64];
			strftime(tmp, sizeof(tmp), "%Y/%m/%d %X",localtime(&t));

			sprintf_s(szMsg, "%s  ", tmp); //先打印时间

			vsnprintf(szMsg+strlen(szMsg), MAX_PATH*2-strlen(szMsg), pszFormat, args);  //后再打印消息

			va_end(args);


			fwrite(szMsg, 1, strlen(szMsg), fp);

			fclose(fp);
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值