c 寫入應用程式日誌(Event Log )

2021-05-23 18:24:47 字數 2783 閱讀 4087

日誌檔案是作業系統的一部分,那麼肯定有應用程式程式設計介面(api)來支援建立日誌記錄

例項:handle h;

if ((h = registereventsource(null,text("metalive"))) == null)

const char* ps = "pszs1pszs2pszs3";

word wtype=eventlog_error_type;//eventlog_information_type;

dword dwid=5001;

int istr = 1;

bool bret;

dword dword;

if (h)

//基於 windows xp 的計算機將事件記錄在以下三種日誌中:

1. 應用程式日誌

應用程式日誌包含由程式記錄的事件。例如,資料庫程式可能在應用程式日誌中記錄檔案錯誤。寫入到應用程式

日誌中的事件是由軟體程式開發人員確定的。

2. 安全日誌

安全日誌記錄有效和無效的登入嘗試等事件,以及與資源使用有關的事件(如建立、開啟或刪除檔案)。例如,

在啟用登入審核的情況下,每當使用者嘗試登入到計算機上時,都會在安全日誌中記錄乙個事件。您必須以 administrator

或 administrators 組成員的身份登入,才能開啟、使用安全日誌以及指定將哪些事件記錄在安全日誌中。

3. 系統日誌

系統日誌包含 windows xp 系統元件所記錄的事件。例如,如果在啟動過程中未能載入某個驅動程式,則會在

系統日誌中記錄乙個事件。windows xp 預先確定由系統元件記錄的事件。

本文,我們專注於第一類應用程式日誌,介紹如何寫入一條eventlog。windows使用reportevent 報告應用程式訊息,

下面就對這個函式做點簡單的介紹。

handleheventlog,

// registereventsource

返回的handle

wordwtype,

// 要記錄的事件型別

wordwcategory,

// 事件種類

dworddweventid,

// 事件標示

psidlpusersid,

// 使用者安全標示(可選)

wordwnumstrings,

// 訊息的字串數

dworddwdatasize,

// 以位元組為單位的二進位制資料的大小

lpctstr*lpstrings,

// 訊息本身

lpvoidlprawdata

// 二進位制資料

);

parameters

heventlog

事件標誌。這個是 registereventsource 返回的handle.

wtype

事件的型別。可以是如下中的乙個:

value     meaning

eventlog_error_type     error event

eventlog_warning_type     warning event

eventlog_information_type     information event

eventlog_audit_success     success audit event

eventlog_audit_failure     failure audit event

wcategory

指出訊息種類。這個地方是由源自己定義的,可以是任何值。

dweventid

事件標識。根據我的理解,這裡的標識在使用時,會又源解釋為具體的含義。比如:2001表示檔案開啟錯誤等等。

因此,要想設定完整的event log還需要在系統中註冊乙個解釋的服務程式。示例程式並沒有設計這個服務,

讀者可以參考另外的那個vb程式。

lpusersid

指向使用者安全標示。當不需要安全標示時,該引數可以為null.

wnumstrings

給定lpstrings 指向的陣列中字串組的數量。0表示當前沒有字串組。

dwdatasize

給出將寫入evenet log的資料的大小,以位元組為單位。如果這個引數為0,表示當前沒有事件資料。

lpstrings

指向乙個緩衝區,其中是乙個以0為結尾的字串陣列,這個陣列將會新增到訊息中。即使dwdatasize 引數為0,

這個引數也必須是有效的指標(或者為null)。陣列中每個字串最大為32k 位元組。

lprawdata

指向包含二進位制資料的緩衝區。即使dwdatasize 引數為0,該項也必須是乙個有效的指標(或者為null).

return values

如果執行成功,返回非零值,表示事件入口已經寫入日誌。

如果執行不成功,返回0.

檢視 Windows 應用程式日誌

在 開始 選單上,依次指向 所有程式 管理工具 然後單擊 事件檢視器 在事件檢視器中,單擊 應用程式 sql server 事件由 資源 列中的mssqlserver項 命名例項以mssql 標識 標識。sql server 事件由 sqlserveragent 項標識 對於已命名的 sql ser...

iOS 捕獲應用程式崩潰日誌

作為一名ios移動應用開發者,為了確保你的應用程式正確無誤,在將應用程式提交到應用商店之前,你必定會進行大量的測試工作 而且在你測試的過程中應用程式執行的很好,但是在應用商店上線之後,還是有使用者抱怨應用程式會 閃退 現在作為應用程式的開發人員你肯定會準備開啟 準備修復 閃退 的問題,但是就在這個時...

C 應用程式域

在作業系統中,程式和程式之間應實現某種形式的隔離,防止程式和程式之間產生不可預知的影響,這種隔離是必須的。在dotnet技術之前,通常採用程序來形成隔離邊界。每乙個應用程式被載入到單獨的程序中,每個程序都有其私有的記憶體,執行在乙個程序中的應用程式不能寫入另乙個應用程式的記憶體,您也不能在兩個程序間...