Microsoft Docs

Event Logging

Table of Contents

Overview

The Event Logging API enables applications and services to record system and application events to the Windows Event Log. It provides functions for registering event sources, reporting events, reading, clearing, and backing up logs.

Functions

FunctionHeaderDescription
RegisterEventSourceA/Wwinbase.hRegisters an application as an event source.
DeregisterEventSourcewinbase.hCloses a handle to an event source.
ReportEventA/Wwinbase.hWrites an event to the log.
OpenEventLogA/Wwinbase.hOpens a handle to an event log.
ReadEventLogA/Wwinbase.hReads entries from an event log.
ClearEventLogA/Wwinbase.hClears an event log.
BackupEventLogA/Wwinbase.hBacks up an event log to a file.

Structures

StructureMembers
EVENTLOGRECORD
DWORD Length;
DWORD Reserved;
DWORD RecordNumber;
DWORD TimeGenerated;
DWORD TimeWritten;
DWORD EventID;
WORD  EventType;
WORD  NumStrings;
WORD  EventCategory;
WORD  ReservedFlags;
DWORD ClosingRecordNumber;
DWORD StringOffset;
DWORD UserSidLength;
DWORD UserSidOffset;
DWORD DataLength;
DWORD DataOffset;

Constants & Enums

NameValueDescription
EVENTLOG_ERROR_TYPE0x0001Error event
EVENTLOG_WARNING_TYPE0x0002Warning event
EVENTLOG_INFORMATION_TYPE0x0004Informational event
EVENTLOG_AUDIT_SUCCESS0x0008Success audit
EVENTLOG_AUDIT_FAILURE0x0010Failure audit

Sample Code

The following example registers an event source and writes an informational event to the Application log.

#include <windows.h>
#include <stdio.h>

int wmain()
{
    const wchar_t* source = L"MySampleApp";
    HANDLE hEventLog = RegisterEventSourceW(NULL, source);
    if (!hEventLog) {
        wprintf(L"RegisterEventSource failed: %lu\\n", GetLastError());
        return 1;
    }

    const wchar_t* strings[2] = { L"Operation completed", L"All steps succeeded" };
    if (!ReportEventW(hEventLog,
                      EVENTLOG_INFORMATION_TYPE,
                      0,
                      0x1000,
                      NULL,
                      2,
                      0,
                      strings,
                      NULL)) {
        wprintf(L"ReportEvent failed: %lu\\n", GetLastError());
    }

    DeregisterEventSource(hEventLog);
    return 0;
}