資源簡介
多線程日志記錄源碼
多線程日志記錄源碼
多線程日志記錄源碼

代碼片段和文件信息
//?InfomationReport.cpp:?implementation?of?the?CInfoReport?class.
//
//////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“WriteInfo.h“
#include?“InfomationReport.h“
#ifdef?_DEBUG
#undef?THIS_FILE
static?char?THIS_FILE[]=__FILE__;
#define?new?DEBUG_NEW
#endif
//?因為是static?member,所以要在此聲明
CPtrList?CInfoReport::m_lstpThreads;
DWORD?CInfoReport::m_dwFatalErrThrdID;
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
CInfoReport::CInfoReport()
{
}
CInfoReport::~CInfoReport()
{
}
//////////////////////////////////////////////////////////////////
// 功能函數
//////////////////////////////////////////////////////////////////
//
//??FUNCTION:?DWORD?Register(LPCTSTR?ModuleNameToReg)
//
//??PURPOSE:?根據傳入的模塊名返回一個ID為調用WriteInfo()作準備
//
//??PARAMETERS:
// MoudleNameToReg:?用來獲取ID的模塊名稱。
//
//??RETURN?VALUE:
// DWORD類型,實際上是所分配線程在lstpThreads鏈表中的存儲位置。
//
//??COMMENTS:
//
// 當需要日志記錄時,需要用該函數取得一個ID來調用WriteInfo()。
// 該函數給出一個新的ID意味著為調用它的模塊產生了一個新的日志記錄線程。
//
DWORD?CInfoReport::Register(LPCTSTR?ModuleNameToReg)
{
CWriteInfo?*pWriteInfo?=?NULL;
POSITION?pos?posPrev;
//?首先要起動一個維護FatalErr.log的線程
if(m_lstpThreads.IsEmpty())
{
CString?strFatalErr?=?“FatalErr.log“;
//?為每一個需要注冊的模塊創建操作對應文件的線程
pWriteInfo?=?(CWriteInfo*)::AfxBeginThread(RUNTIME_CLASS(CWriteInfo)00CREATE_SUSPENDED);
pWriteInfo->SetModuleFileName(strFatalErr);
m_dwFatalErrThrdID?=?(DWORD)m_lstpThreads.AddTail(pWriteInfo);
pWriteInfo->ResumeThread();
}
????//?當遇到在一個模塊內重復調用該函數這種情況時仍然返回原有的ID即對應線程在m_lstpThreads中的position即可
pos?=?m_lstpThreads.GetHeadPosition();
while(pos)
{
posPrev?=?pos;
pWriteInfo?=?(CWriteInfo*)m_lstpThreads.GetNext(pos);
if(0?==?pWriteInfo->GetName().CompareNoCase(ModuleNameToReg))
//if(ModuleNameToReg?==?pWriteInfo->GetName())
{
return?(DWORD)posPrev;
}
}
//?為每一個需要注冊的模塊創建或者打開操作對應的文件
{
}
//?為每一個需要注冊的模塊創建操作對應文件的線程
pWriteInfo?=?(CWriteInfo*)::AfxBeginThread(RUNTIME_CLASS(CWriteInfo)00CREATE_SUSPENDED);
pWriteInfo->SetModuleFileName(ModuleNameToReg);
pos?=?m_lstpThreads.AddTail(pWriteInfo);
pWriteInfo->ResumeThread();
return?(DWORD)pos;
}
//////////////////////////////////////////////////////////////////
// 功能函數
//////////////////////////////////////////////////////////////////
//
//??FUNCTION:?void?WriteInfo(DWORD?MoudleID?CString?InfoDescribe)
//
//??PURPOSE:?將提供的信息寫入到對應的日志文件中。
//
//??PARAMETERS:
// MoudleID:?用Register()函數獲取來的模塊ID如果以NULL作為MoudleID來調
// ??用此函數那就意味著發生了致命錯誤信息將被寫入到FatalErr.log文件中。
// InfoDescribe:?需要記錄的信息
//
//??RETURN?VALUE:
// N/A
//
//??COMMENTS:
//
// 用該函數寫入日志信息。
//
void?CInfoReport::WriteInfo(DWORD?MoudleID?CString?InfoDescribe)
{
/* //?如果以NULL作為MoudleID來調用此函數那就意味著發生了致命錯誤.
if(MoudleID?==?NULL)
MoudleID?=?m_dwFatalErrThrdID;
*/??
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1277??2007-06-14?10:13??InfoReportDemo多線程日志記錄good\Include\InfomationReport.h
?????文件???????5458??2007-06-14?12:25??InfoReportDemo多線程日志記錄good\InfoReport\InfomationReport.cpp
?????文件???????1561??2003-05-28?15:03??InfoReportDemo多線程日志記錄good\InfoReport\InfoReport.cpp
?????文件????????196??2003-05-28?15:03??InfoReportDemo多線程日志記錄good\InfoReport\InfoReport.def
?????文件???????4539??2007-06-14?13:31??InfoReportDemo多線程日志記錄good\InfoReport\InfoReport.dsp
?????文件????????543??2003-05-28?15:03??InfoReportDemo多線程日志記錄good\InfoReport\InfoReport.dsw
?????文件??????58368??2007-06-14?13:52??InfoReportDemo多線程日志記錄good\InfoReport\InfoReport.ncb
?????文件??????54784??2007-06-14?13:52??InfoReportDemo多線程日志記錄good\InfoReport\InfoReport.opt
?????文件????????256??2007-06-14?13:52??InfoReportDemo多線程日志記錄good\InfoReport\InfoReport.plg
?????文件???????3089??2003-05-28?15:03??InfoReportDemo多線程日志記錄good\InfoReport\InfoReport.rc
?????文件?????????51??2003-06-02?10:47??InfoReportDemo多線程日志記錄good\InfoReport\res\CVS\Entries
?????文件?????????23??2003-06-02?10:47??InfoReportDemo多線程日志記錄good\InfoReport\res\CVS\Repository
?????文件?????????46??2003-06-02?10:47??InfoReportDemo多線程日志記錄good\InfoReport\res\CVS\Root
?????文件????????402??2003-05-28?15:03??InfoReportDemo多線程日志記錄good\InfoReport\res\InfoReport.rc2
?????文件????????382??2003-05-28?15:03??InfoReportDemo多線程日志記錄good\InfoReport\Resource.h
?????文件????????212??2003-05-28?15:03??InfoReportDemo多線程日志記錄good\InfoReport\StdAfx.cpp
?????文件???????1485??2003-05-28?15:03??InfoReportDemo多線程日志記錄good\InfoReport\StdAfx.h
?????文件???????4511??2007-06-14?13:51??InfoReportDemo多線程日志記錄good\InfoReport\WriteInfo.cpp
?????文件???????1580??2003-05-29?14:25??InfoReportDemo多線程日志記錄good\InfoReport\WriteInfo.h
?????文件???????1965??2003-06-12?17:14??InfoReportDemo多線程日志記錄good\InfoReportTest\InfoReportTest.clw
?????文件???????4468??2007-06-14?12:37??InfoReportDemo多線程日志記錄good\InfoReportTest\InfoReportTest.cpp
?????文件???????4914??2007-06-14?12:47??InfoReportDemo多線程日志記錄good\InfoReportTest\InfoReportTest.dsp
?????文件????????551??2003-06-12?17:14??InfoReportDemo多線程日志記錄good\InfoReportTest\InfoReportTest.dsw
?????文件???????1444??2003-06-12?17:14??InfoReportDemo多線程日志記錄good\InfoReportTest\InfoReportTest.h
?????文件??????66560??2007-06-14?13:52??InfoReportDemo多線程日志記錄good\InfoReportTest\InfoReportTest.ncb
?????文件??????55808??2007-06-14?13:52??InfoReportDemo多線程日志記錄good\InfoReportTest\InfoReportTest.opt
?????文件????????838??2007-06-14?13:52??InfoReportDemo多線程日志記錄good\InfoReportTest\InfoReportTest.plg
?????文件???????9997??2003-06-12?17:14??InfoReportDemo多線程日志記錄good\InfoReportTest\InfoReportTest.rc
?????文件???????1902??2003-06-12?17:14??InfoReportDemo多線程日志記錄good\InfoReportTest\InfoReportTestDoc.cpp
?????文件???????1563??2003-06-12?17:14??InfoReportDemo多線程日志記錄good\InfoReportTest\InfoReportTestDoc.h
............此處省略34個文件信息
- 上一篇:C#調用PComm.dll
- 下一篇:Asp.net多線程
評論
共有 條評論