Event Viewer, a component of Microsoft's Windows NT line of operating systems, lets administrators and users view the event logs on a local or remote machine. In Windows Vista, Microsoft overhauled the event system.
Windows NT has featured event logs since its release in 1993. Applications and operating system components can make use of this centralized log service to report events that have taken place, such as a failure to start a component or complete an action. The system defines three log sources: System, Application and Security.
The Event Viewer uses event IDs to define the uniquely identifiable events that a Windows computer can encounter. For example, when a user's authentication fails, the system may generate Event ID 672.
Windows NT 4.0 added support for defining "event sources" (i.e. the application which created the event) and performing backups of logs.
Windows 2000 added the capability for applications to create their own log sources in addition to the three system-defined "System", "Application", and "Security" log files. Windows 2000 also replaced NT4's Event Viewer with a Microsoft Management Console (MMC) snap-in.
Versions of Windows based on the Windows NT 6.0 kernel (Windows Vista and Windows Server 2008) no longer have a 300-megabyte limit to their total size. Prior to NT 6.0, the on-disk files were opened as memory-mapped files in kernel memory space, which used the same memory pools as other kernel components.
Windows XP (commandline) 
Windows XP provides a set of three commandline tools, useful to task automation:
- eventquery.vbs - Official script to query, filter and output results based on the event logs. Discontinued after XP.
- eventcreate - a command (continued in Vista and Seven) to put custom events in the logs.
- eventtriggers - a command to create event driven tasks. Discontinued after XP, replaced by the "Attach task to this event" feature.
Windows Vista 
Event Viewer consists of a rewritten event tracing and logging architecture on Windows Vista. It has been rewritten around a structured XML log-format and a designated log type to allow applications to more precisely log events and to help make it easier for support technicians and developers to interpret the events. The XML representation of the event can be viewed on the Details tab in an event's properties. It is also possible to view all potential events, their structures, registered event publishers and their configuration using the wevtutil utility, even before the events are fired. There are a large number of different types of event logs including Administrative, Operational, Analytic, and Debug log types. Selecting the Application Logs node in the Scope pane reveals numerous new subcategorized event logs, including many labeled as diagnostic logs. Analytic and Debug events which are high frequency are directly saved into a trace file while Admin and Operational events are infrequent enough to allow additional processing without affecting system performance, so they are delivered to the Event Log service. Events are published asynchronously to reduce the performance impact on the event publishing application. Event attributes are also much more detailed and show EventID, Level, Task, Opcode, and Keywords properties.
Users can filter event logs by one or more criteria or by a limited XPath 1.0 expression, and custom views can be created for one or more events. Using XPath as the query language allows viewing logs related only to a certain subsystem or an issue with only a certain component, archiving select events and sending traces on the fly to support technicians.
Filtering using XPath 1.0 
- Open Windows Event Log
- Expand out Windows Logs
- Select the log file that is of interest to you (In the example below, we use the Security event log)
- Right-click on the Event Log and select Filter Current Log...
- Change the selected tab from Filter to XML
- Check the box to Edit query manually'
- Paste your query into the text box. You will find sample queries below.
Here are examples of simple custom filters for the new Window Event Log:
- Select all events in the Security Event Log where the account name involved (TargetUserName) is "JUser"
<QueryList><Query Id="0" Path="Security"><Select Path="Security">*[EventData[Data[@Name="TargetUserName"]="JUser"]]</Select></Query></QueryList>
- Select all events in the Security Event Log where any Data node of the EventData section is the string "JUser"
<QueryList><Query Id="0" Path="Security"><Select Path="Security">*[EventData[Data="JUser"]]</Select></Query></QueryList>
- Select all events in the Security Event Log where any Data node of the EventData section is "JUser" or "JDoe"
<QueryList><Query Id="0" Path="Security"><Select Path="Security">*[EventData[Data="JUser" or Data="JDoe"]]</Select></Query></QueryList>
- Select all events in the Security Event Log where any Data node of the EventData section is "JUser" and the Event ID is "4471"
<QueryList><Query Id="0" Path="Security"><Select Path="Security">*[System[EventID="4771"]] and *[EventData[Data="JUser"]]</Select></Query></QueryList>
- Real world example for a package called Goldmine which has two @Names
<QueryList><Query Id="0" Path="Application"><Select Path="Application">*[System[Provider[@Name='GoldMine' or @Name='GMService']]]</Select></Query></QueryList>
- There are limitations to Microsoft's implementation of XPath
- Queries using XPath string functions will result in error
Event subscribers 
Major event subscribers include the Event Collector service and Task Scheduler 2.0. The Event Collector service can automatically forward event logs to other remote systems, running Windows Vista, Windows Server 2008 or Windows Server 2003 R2 on a configurable schedule. Event logs can also be remotely viewed from other computers or multiple event logs can be centrally logged and monitored agentlessly and managed from a single computer. Events can also be directly associated with tasks, which run in the redesigned Task Scheduler and trigger automated actions when particular events take place.
See also 
- New tools for Event Management in Windows Vista
- "AuthzInstallSecurityEventSource Function". Retrieved 2007-10-05.
- "Microsoft's Implementation and Limitations of XPath 1.0 in Windows Event Log". Retrieved 2009-08-07.
- "Powershell script to filter events using an Xpath query". Retrieved 2011-09-20.
- Official sources:
- Developer documentation for event logging (NT 3.1 through XP), (Windows Vista)
- Windows 2000 Security Event Descriptions (Part 1 of 2), (Part 2 of 2)
- Windows Server 2003 Security – Threats and Countermeasures – Chapter 6: Event Log from Microsoft TechNet
- Events and Errors (Windows Server 2008) on Microsoft TechNet
- For Developers: