共用方式為


記錄指導方針

事件記錄會代表系統上執行的系統和應用程式儲存重要事件的記錄。 由於記錄函式是一般用途,您必須決定哪些資訊適合記錄。 一般而言,您應該只記錄可能有助於診斷硬體或軟體問題的資訊。 事件記錄並非用來做為追蹤工具。

選擇要記錄的事件

以下是事件記錄可能有説明的案例範例:

  • 資源問題。 當記憶體配置失敗時,記錄警告事件有助於指出記憶體不足狀況的原因。
  • 硬體問題。 如果設備驅動器遇到磁碟控制器逾時、平行埠中的電源故障,或來自網路或序列卡的數據錯誤,則設備驅動器可以記錄這些事件的相關信息,以協助系統管理員診斷硬體問題。
  • 壞扇區。 如果磁碟驅動器遇到不良扇區,在重試作業之後,它可能會讀取或寫入扇區,但扇區最終會變壞。 如果磁碟驅動程式可以繼續,它應該會記錄 Warning 事件;否則,它應該會記錄 Error 事件。 如果文件系統驅動程式找到大量的不良扇區並加以修正,記錄警告事件可能有助於系統管理員判斷磁碟可能即將失敗。
  • 資訊事件。 伺服器應用程式(例如資料庫伺服器)會記錄使用者登入、開啟資料庫或啟動檔案傳輸。 伺服器也可以記錄其他事件,例如錯誤(無法存取檔案、主機進程已中斷連線等等)、資料庫損毀,或檔案傳輸是否成功。

寫入訊息

訊息應該對嘗試針對問題進行疑難解答的系統管理員和使用者有意義。 訊息應該包含瞭解造成問題的原因,以及如何更正問題所需的所有資訊。

避免撰寫類似「從 I/O 子系統接收的驅動程式封包無效」等神秘訊息。 數據是封包。更好的訊息會指出有問題的驅動程式正常運作,但記錄格式不正確的封包。 它可能會繼續說,需要 Unicode 版本的驅動程式來修正問題。 如需撰寫良好錯誤訊息的詳細資訊,請參閱 錯誤訊息指導方針

請勿在消息正文中使用索引標籤或逗號,因為事件記錄檔可以儲存為逗號或索引標籤分隔文本檔。 許多組織會將這些檔案匯入資料庫,而且額外的格式字元將需要手動操作。

使用 UNC 名稱或其他包含空白的連結時,請以角括弧括住名稱。 例如,<\\sharename\servername。> 您可以將 URL 寫入訊息結尾,以將使用者指向相關說明數據。 URL 必須是完整 DNS 主機名。 例如,您可以將下列文字附加至您的訊息:「如需此訊息的其他資訊,請造訪我們的支持網站。 https://www.microsoft.com/Support/ProdRedirect/ContentSearch.asp」連結會導致 ASP 頁面將使用者重新導向至與錯誤訊息相關的內容。 它會剖析其他參數(按兩下URL時傳遞),以判斷要重新導向使用者的位置。

傳遞至 ReportEvent 函式的自變數會附加至 URL,如下所示:

strHTTPQuery += L"?EvtSrc=" + _strEscapedSource;
strHTTPQuery += L"&EvtCat=" + _strEscapedCategory;
strHTTPQuery += L"&EvtID=" + _strEscapedEventID;
strHTTPQuery += L"&EvtCatID=" + _strEscapedCategoryID;
strHTTPQuery += L"&EvtType=" + _strEscapedType;
strHTTPQuery += L"&EvtTypeID=" + _strEscapedTypeID;
strHTTPQuery += L"&EvtRptTime=" + _strEscapedDateAndTime;
strHTTPQuery += L"&EvtTZBias=" + _strEscapedTimeZoneBias;

如果事件來源訊息 DLL 標頭中的公司名稱、產品名稱、產品版本、檔名和檔案版本有效,它們也會附加至 URL:

ADD_VER_STR(L"CoName",   _strEscapedCompanyName);
ADD_VER_STR(L"ProdName", _strEscapedProductName);
ADD_VER_STR(L"ProdVer",  _strEscapedProductVersion);
ADD_VER_STR(L"FileName", _strEscapedFileName);
ADD_VER_STR(L"FileVer",  _strEscapedFileVersion);

減少額外負荷

事件記錄會耗用磁碟空間和處理器時間等資源。 事件記錄檔所需的磁碟空間量,以及記錄事件之應用程式的額外負荷,取決於您選擇記錄多少資訊。 這就是為什麼只記錄基本資訊很重要的原因。 最好將事件記錄呼叫放在程式碼的錯誤路徑中,而不是將效能降低的主要程式碼路徑中。

每個事件記錄檔記錄所需的磁碟空間量包含EVENTLOGRECORD結構的成員 這是可變長度結構;字串和二進位數據會儲存在 結構之後。