#include"stdafx.h"
#include <Windows.h>
#include <iostream>
#include <sstream>
#include <iomanip>
#include <ShlObj.h>
#include<atltime.h>
void trace(LPCTSTR format,...)
{
TCHAR szTraceFlag[MAX_PATH] = {0};
if (!SHGetSpecialFolderPath(NULL, szTraceFlag, CSIDL_LOCAL_APPDATA, TRUE))
{
return;
}
_tcscat(szTraceFlag, _T("\\ben_Trace.log")); // 这里设置日志文件的目录
CString filter;
FILE* fp =_tfopen(szTraceFlag, _T("r, ccs=UTF-8"));
if(fp==NULL)
{
filter=_T("w, ccs=UTF-8");
}
else
{
fclose(fp);
fp=NULL;
filter=_T("a, ccs=UTF-8");
}
fp=_tfopen(szTraceFlag, filter);
wchar_t buffer[1024];
va_list arglist;
std::wostringstream so;
va_start ( arglist, format );
vswprintf ( buffer, 1024, format, arglist );
va_end ( arglist );
so<<buffer<< " ";
// 把当前时间也输出
CTime tm=CTime::GetCurrentTime();
CString str=tm.Format(L"%Y-%m-%d, %p %H:%M:%S");
so << "---> " << (str.GetBuffer(str.GetLength())) << std::endl;
fwrite(so.str().c_str(),sizeof(wchar_t),so.str().length(),fp);
fclose(fp);
}
int main( void )
{
for (int i = 0; i < 10; ++i)
{
trace(L"测试: %d", i);
}
}
为程序输出日志信息
最新推荐文章于 2024-02-12 18:19:38 发布