如何用C++实现系统日志文件信息写入
写一个C++类,实现系统日志文件的描述信息写入...求指点,用API函数实现
[解决办法]
http://msdn.microsoft.com/en-us/library/aa363654(VS.85).aspx里面API一大把呢。
但如果你要求别人帮你设计一下类,这个好像没什么必要,API很简单,自己封闭一下即可。
况且你应该提供必要的需求。
[解决办法]
如果你的代码可以工作,一个函数就可以了,也没有必要封装了。
如果非要一个类,而又没什么需求,无非就是这么写罢了,当然, 这个类很次。
#i nclude "stdafx.h"
#i nclude <Windows.h>
#i nclude "cmpservicemsg.h"
class LogEventWriter
{
public:
void LogEvent( WORD wType, DWORD dwID, const TCHAR* pszFormat, ...)
};
void LogEventWriter::LogEvent( WORD wType, DWORD dwID, const TCHAR* pszFormat, ...)
{
/*EVENTLOG_ERROR_TYPE EVENTLOG_INFORMATION_TYPE*/
HANDLE hEventLog=NULL;
TCHAR* pBuf[1];
TCHAR buf[1024]={0};
va_list arglist;
va_start(arglist, pszFormat);
_vstprintf_s(buf, 1023, pszFormat, arglist);
va_end(arglist);
_tcscat_s(&buf[_tcslen(buf)], 1023-_tcslen(buf), _T("\n\n"));
pBuf[0] = buf;
/* 打开事件源 */
hEventLog = RegisterEventSource( NULL, _T("CMPService") );
if( NULL != hEventLog )
{
/* 内容写入 */
ReportEvent( hEventLog,
wType,
0,
dwID,
NULL,
1,
0,
(LPCTSTR*)pBuf,
NULL );
}
DeregisterEventSource(hEventLog);
}
int _tmain(int argc, _TCHAR* argv[])
{
LogEventWriter writer;
writer.LogEvent(EVENTLOG_INFORMATION_TYPE, EVMSG_INFORMATION, _T("Kao,这样都行呀!%s真厉害!--------%d"), _T("赵文卓"), 2);
writer.LogEvent(EVENTLOG_ERROR_TYPE, EVMSG_ERROR, _T("瓦靠!不行了吧! %s还要努力呀!-----%d"), _T("赵文卓"), 3);
return 0;
}