C/C++实现的生成日志的一个简易方法

本文详细介绍了在Log.h文件中实现的日志记录与输出功能,包括日期时间戳的获取、文件追加写入日志及调试信息的输出。

Log.h中的代码:

#pragma once

#define MAX_BUFFER_LENGTH 1024

class CLog
{
public:
	static BOOL WriteLog(LPTSTR data, ...)
	{
		SYSTEMTIME SystemTime;

		TCHAR CurrentDate[32] = {0,};
		TCHAR CurrentFileName[MAX_PATH] = {0,};

		FILE* FilePtr = NULL;
		TCHAR DebugLog[MAX_BUFFER_LENGTH] = {0,};

		va_list ap;
		TCHAR Log[MAX_BUFFER_LENGTH] = {0,};

		va_start(ap,data);
		_vstprintf(Log,data,ap);
		va_end(ap);

		GetLocalTime(&SystemTime);
		_sntprintf(CurrentDate,32,_T("%d-%d-%d %d:%d:%d"),
			SystemTime.wYear,
			SystemTime.wMonth,
			SystemTime.wDay,
			SystemTime.wHour,
			SystemTime.wMinute,
			SystemTime.wSecond);
		_sntprintf(CurrentFileName,MAX_PATH,_T("LOG_%d-%d-%d %d.log"),
			SystemTime.wYear,
			SystemTime.wMonth,
			SystemTime.wDay,
			SystemTime.wHour);

		FilePtr = _tfopen(CurrentFileName,_T("a"));
		if(!FilePtr)
			return FALSE;

		_ftprintf(FilePtr,_T("[%s] %s\n"),CurrentDate,Log);
		_sntprintf(DebugLog,MAX_BUFFER_LENGTH,_T("[%s] %s\n"),CurrentDate,Log);

		fflush(FilePtr);
		fclose(FilePtr);

		OutputDebugString(DebugLog);
		_tprintf(_T("%s"),DebugLog);

		return TRUE;
	}
};

测试代码:(忽略上下文)
......

CLog::WriteLog(_T("测试日志:%d,%s"),1,"abcdef");
CLog::WriteLog(_T("测试日志:%d,%s"),2,"啊哦额");

......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值