Vibe monitoring with Last9 MCP: Ask your agent to fix production issues! Setup →
Last9 Last9

Windows Error Logs: Your Guide to Simplified Debugging

Windows error logs hold clues to what’s going wrong. Learn how to read them and make debugging faster and less frustrating.

May 29th, ‘25
Windows Error Logs: Your Guide to Simplified Debugging
See How Last9 Works

Unified observability for all your telemetry.Open standards. Simple pricing.

Talk to us

When an application functions flawlessly in your environment but crashes unpredictably on a client’s Windows server, the root cause is often buried in system logs—logs many developers overlook. Windows maintains comprehensive error records that document crashes, failures, and system events with precise detail.

These Windows error logs serve as an invaluable resource for diagnosing issues in production environments. Whether addressing memory leaks, unexpected service restarts, or intermittent failures, leveraging these logs is critical for effective troubleshooting and reducing downtime.

In this section, we will examine how to access and interpret Windows error logs to gain clear visibility into application failures and improve incident response.

What Are Windows Error Logs?

Windows error logs are detailed records that the operating system automatically maintains to track important events such as application crashes, system failures, security incidents, and hardware problems. These logs capture critical information whenever an issue occurs.

The main types of Windows logs and their purpose include:

  • Application Logs: Record events generated by software running on the system. For example, unhandled exceptions in .NET applications or crashes in Python scripts are logged here with relevant details.
  • System Logs: Capture events related to Windows components, device drivers, and the operating system itself. Errors like blue screen crashes are recorded with precise error codes and driver information.
  • Security Logs: Track authentication attempts, file access, and policy changes. These logs are essential for investigating permission errors or security-related issues.
  • Setup Logs: Document installation and update activities, useful for troubleshooting deployment problems or identifying recent system changes.

Here is an example of a typical error log entry:

Event ID: 1000  
Source: Application Error  
Level: Error  
Description: Faulting application name: MyApp.exe, version: 1.2.3.0,  
faulting module name: KERNELBASE.dll, exception code: 0xc0000005,  
fault offset: 0x0000000000012345

This entry indicates that MyApp.exe crashed due to an access violation (exception code 0xc0000005) in the module KERNELBASE.dll. This detailed information is critical for diagnosing and resolving the issue.

💡
If you want to understand how Windows Event Logs capture system events and help with troubleshooting, our guide explains it clearly!

How to View Windows Error Logs

The primary tool for viewing Windows error logs is Event Viewer. You can launch it by typing Event Viewer in the Start menu search or by running eventvwr.msc from the Run dialog (Win + R).

Once opened, the Event Viewer interface presents a tree structure on the left side, with Windows Logs as the main category. Under Windows Logs, you will find several subcategories:

  • Application
  • Security
  • Setup
  • System
  • ForwardedEvents

Selecting any category will display its recorded events in the main panel. Although the interface may seem complex initially, it provides essential details for each log entry, including the date and time, event level (Information, Warning, Error, Critical), source, and event ID.

For users who prefer command-line access, PowerShell offers effective alternatives. For example, to retrieve the last 10 application errors, use:

Get-EventLog -LogName Application -Newest 10 -EntryType Error

This command lists recent errors without opening the graphical interface. For more granular filtering, the newer Get-WinEvent cmdlet provides enhanced capabilities:

Get-WinEvent -FilterHashtable @{
    LogName='Application';
    StartTime='2024-01-01';
    EndTime='2024-01-02';
    Level=2
}

Additionally, the wevtutil command offers precise querying options. For example, to display the last 10 blue screen (BSOD) events (Event ID 1001) from the System log in text format, use:

wevtutil qe System /f:text /c:10 /q:"*[System[(EventID=1001)]]"

This command is useful for quickly reviewing recent critical system failures.

💡
To keep your Windows servers running smoothly, it helps to monitor key system metrics alongside error logs—this blog covers effective Windows server monitoring!

Key Components of Windows Error Logs

Each Windows error log entry includes critical details that help pinpoint the cause of an issue. Key elements to focus on include:

  • Timestamp: Records the exact time the event occurred. This is essential for correlating logs with user reports, deployments, or system changes.
  • Event ID: A unique identifier for the event type. For instance, Event ID 1000 typically signifies an application crash, making it a crucial reference during troubleshooting.
  • Source: Identifies the component responsible for generating the event, such as an application, Windows service, or system module.
  • Level: Indicates the severity of the event:
    • Information — routine operation
    • Warning — potential issues requiring attention
    • Error — problems needing immediate investigation
    • Critical — severe failures impacting system stability

Consider the following example from a web application debug log:

Event ID: 1000  
Source: Application Error  
Level: Error  
User: N/A  
Description: Faulting application name: w3wp.exe, version: 10.0.17763.1,  
time stamp: 0x5bd7041c, faulting module name: MyWebApp.dll,  
version: 1.0.0.0, time stamp: 0x5f8a2b3c, exception code: 0xe0434352,  
fault offset: 0x000000000001b4a7

This entry shows that the IIS worker process (w3wp.exe) crashed due to an exception within MyWebApp.dll. The exception code 0xe0434352 corresponds to a .NET managed exception, indicating the need to consult additional .NET Framework logs or related application event entries for detailed information on the underlying exception.

Troubleshooting Frequent Windows Errors

Application Crashes That Give Useful Clues

When an application crashes, Windows usually logs an Application Error event with Event ID 1000. These logs show the module that caused the crash, the exception code, and the memory location, which are key for troubleshooting.

For example, here’s a log entry for a C# service crashing in production:

Event ID: 1000  
Source: Application Error  
Description: Faulting application name: MyService.exe, version: 2.1.4.0,  
faulting module name: clr.dll, version: 4.8.4390.0,  
exception code: 0x80131623, fault offset: 0x00000000001a2b4c

The exception code 0x80131623 means a .NET runtime error. Since the faulting module is clr.dll (the .NET runtime), this points to a managed code issue—not a native code problem. This tells you to focus on your application’s exception handling and check for related .NET error logs.

System Crashes and Blue Screens

System crashes show up with specific event IDs that help identify hardware or driver problems:

Event ID 6008 (EventLog): This signals an unexpected shutdown without proper procedures:

Event ID: 6008  
Source: EventLog  
Description: The previous system shutdown at 11:45:32 AM on ‎1/‎15/‎2024  
was unexpected.

Event ID 41 (Kernel-Power): This means the system shut down unexpectedly—often due to power issues, overheating, or hardware faults:

Event ID: 41  
Source: Kernel-Power  
Description: The system has rebooted without cleanly shutting down first.  
This could happen if the system crashed, lost power, or stopped responding.

Event ID 1001 (BugCheck): This indicates a Blue Screen of Death (BSOD). It includes the bug check code and parameters that help find the root cause:

Event ID: 1001  
Source: BugCheck  
Description: The computer has rebooted from a bugcheck.  
The bugcheck was: 0x0000007e (0xffffffffc0000005, 0xfffff80002e5c5c3,  
0xfffff88007f0f368, 0xfffff88007f0ebc0)

The code 0x0000007e means SYSTEM_THREAD_EXCEPTION_NOT_HANDLED, usually caused by a driver accessing invalid memory.

If you see these errors often, check your hardware health, system temperatures, power supply, and recent driver updates.

Service Failures and Startup Problems

When Windows services fail or crash, these events are logged:

Event ID 7000: Means a service failed to start, often due to configuration or resource issues:

Event ID: 7000  
Source: Service Control Manager  
Description: The MyCustomService service failed to start because  
it did not respond in a timely manner.

Event ID 7034: Shows that a service terminated unexpectedly, with the count of recent crashes:

Event ID: 7034  
Source: Service Control Manager  
Description: The MyCustomService service terminated unexpectedly.  
It has done this 1 time(s).

These logs help you tell if the problem is a setup/configuration issue or a bug in your code.

Security and Permission Issues

Security logs help track permission problems:

Event ID 5145: Shows when network file access was denied:

Event ID: 5145  
Source: Microsoft-Windows-Security-Auditing  
Description: A network share was checked for access permissions.  
Subject: Account Name: SYSTEM  
Object: Share Name: \\SERVER\ShareName  
Access Request: ReadData (or ListDirectory)  
Access Result: Access Denied

Event ID 4625: Records failed login attempts:

Event ID: 4625  
Source: Microsoft-Windows-Security-Auditing  
Description: An account failed to log on.  
Subject: Security ID: NULL SID  
Account Name: -  
Logon Type: 3  
Account For Which Logon Failed: DOMAIN\serviceaccount

If your application can’t access a file or registry key, check the Security log at the same time. Often, the process runs under an account without the needed permissions.

💡
Now, fix production Windows error log issues instantly—right from your IDE, with Last9 MCP. Bring real-time production context—logs, metrics, and traces—into your local environment to troubleshoot faster.

How to Filter and Search Windows Event Logs

Event Viewer’s filtering tools allow you to narrow down logs and focus on relevant events without sifting through thousands of entries. To filter a log, right-click on the desired category and select “Filter Current Log.” This opens options to customize your search.

For example, to find all application crashes from the last 24 hours, you can apply a filter with these settings:

  • Logged: Last 24 hours
  • Event level: Error, Critical
  • Event sources: Application Error
  • Includes/Excludes Event IDs: 1000, 1026

This setup provides a focused view of recent application failures, making troubleshooting more efficient.

For more advanced queries, PowerShell offers powerful filtering capabilities. To find service startup failures over the past week, use:

Get-WinEvent -FilterHashtable @{
    LogName='System';
    StartTime=(Get-Date).AddDays(-7);
    ID=7000,7001,7009,7024
} | Format-Table TimeCreated, Id, LevelDisplayName, Message -AutoSize

This command searches the System log for the specified event IDs related to service startup problems and displays the results in a clear table format.

When debugging intermittent or complex issues, consider creating custom views in Event Viewer. Custom views can aggregate errors and warnings from multiple logs, such as Application and System, giving you a consolidated perspective on system health.

💡
For a clear explanation of how event logs work in Windows and how they can aid your troubleshooting efforts, take a look at this blog!

How to Analyze Windows Crashes Using Memory Dumps

When Windows error logs don’t provide enough detail to diagnose system crashes, memory dump files offer a more complete view. Windows automatically creates minidump files upon crashes and stores them in C:\Windows\Minidump.

Understanding Memory Dump Types

  • Minidumps: Small files (usually under 1MB) containing basic crash information. These are created automatically and are sufficient for initial analysis.
  • Kernel Dumps: Larger files that include all kernel-mode memory. These provide more detailed information about drivers and system components.
  • Complete Memory Dumps: Capture all physical memory, making these files very large but comprehensive for in-depth analysis.

To check your current dump settings:

  1. Right-click This PC and select Properties.
  2. Click Advanced system settings.
  3. Under Startup and Recovery, click Settings.
  4. Look for the System failure section to view dump file options.

Using WinDbg for In-Depth Analysis

For crashes that Windows logs can’t fully explain, WinDbg (Windows Debugger) provides advanced diagnostic capabilities.

Steps to get started:

  • Download and install the Windows Debugging Tools from Microsoft.
  • Load a crash dump file via File → Open Crash Dump, then select your .dmp file.

Run automated analysis using the command:

!analyze -v

Configure the symbol path to enable WinDbg to resolve memory addresses:

.sympath SRV*c:\symbols*http://msdl.microsoft.com/download/symbols

WinDbg will reveal detailed crash information such as:

  • The exact instruction causing the fault.
  • The call stack leading to the failure.
  • The specific driver or component involved.

Example WinDbg output:

FAULTING_IP: 
nt!MmAccessFault+134
fffff800`02e5c5c3 488b08          mov     rcx,qword ptr [rax]

EXCEPTION_RECORD:  fffff88007f0f368 -- (.exr 0xfffff88007f0f368)
ExceptionAddress: fffff80002e5c5c3 (nt!MmAccessFault+0x0000000000000134)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 0000000000000000
   Parameter[1]: 0000000000000000

FAULTING_THREAD:  fffff88007f0e000

PROCESS_NAME:  System

STACK_TEXT:
fffff880`07f0ec38 fffff800`02e5c5c3 : 00000000`00000000 00000000`00000000 
fffff880`07f0ed88 00000000`00000000 : nt!MmAccessFault+0x134

This level of detail is essential when troubleshooting hardware failures or driver conflicts that are not evident in standard Windows error logs.

Best Practices for Windows Error Log Management

Configure Proper Log Retention

Windows logs can grow large over time, potentially impacting system performance. To manage this:

  1. Open Event Viewer.
  2. Right-click a log category (e.g., Application) and select Properties.
  3. Set Maximum log size (20–50 MB recommended).
  4. Choose either Archive the log when full or Overwrite events as needed, based on your needs.

Security logs may require different retention settings for compliance.

Structure Your Application Logging

Integrate structured logging in your applications for clearer, consistent logs. For example, in .NET:

EventLog.WriteEntry("MyApplication", "Error message here", EventLogEntryType.Error, 1001);

Use meaningful event IDs and consistent message formats to simplify troubleshooting.

Security Considerations

Avoid logging sensitive info like passwords or tokens. Limit access to logs containing sensitive data.

Implement log sanitization to mask sensitive information, for example:

string Sanitize(string message)
{
    // Basic example to mask password fields
    return Regex.Replace(message, @"password[=:]\s*\S+", "password=***", RegexOptions.IgnoreCase);
}

Event ID Quick Reference

Event ID Log Category Description What to Check
1000 Application Application crash Exception details, faulting module, recent code changes
1001 System Blue Screen (BugCheck) Driver updates, hardware diagnostics, memory tests
41 System Unexpected shutdown (Kernel-Power) Power supply, temperatures, hardware connections
6005 System Event Log service started Normal system boot or service restart
6006 System Event Log service stopped Normal shutdown or unexpected service failure
6008 System Unexpected system shutdown Power issues, forced shutdowns, system hangs
7034 System Service crashed unexpectedly Service code bugs, resource exhaustion, dependencies
7000 System Service failed to start Configuration, permissions, missing dependencies
4625 Security Failed logon attempt Wrong credentials, account lockout, network issues
4648 Security Explicit credential logon RunAs usage, service account authentication

Wrapping Up

While Event Viewer is great for manual investigation, production environments need automated monitoring and alerting. This is where observability platforms become invaluable for developers managing complex systems.

Last9 is a budget-friendly, managed observability solution that helps you handle high-cardinality data at scale without sacrificing performance. Companies like Probo, CleverTap, and Replit trust Last9's integrated approach that combines metrics, logs, and traces through OpenTelemetry and Prometheus integration.

Here's how you can set up log forwarding from Windows Event Logs:

  1. Install a log shipper like Fluent Bit or the OpenTelemetry Collector
  2. Configure it to read Windows Event Logs.
  3. Set up alerting rules for critical events like Event ID 1000 (application crashes) or Event ID 1001 (system crashes)

This approach means you can create alerts for critical errors, track error trends over time, and correlate system issues with application performance problems without manually checking Event Viewer.

FAQs

How do I find Windows error logs for a specific period?

Use Event Viewer's filtering feature or PowerShell. For PowerShell, try:

Get-WinEvent -FilterHashtable @{
    LogName='Application';
    StartTime='2024-01-15 14:00:00';
    EndTime='2024-01-15 16:00:00'
}

What's the difference between Event ID 1000 and 1001?

Event ID 1000 indicates an application crash with an unhandled exception, while Event ID 1001 represents a blue screen of death (BSOD) at the system level. 1000 affects individual applications; 1001 crashes the entire system.

Can I access Windows error logs from the command line?

Yes! Use PowerShell's Get-EventLog or Get-WinEvent cmdlets, or the wevtutil command. For example:

wevtutil qe Application /c:10 /rd:true /f:text

How long does Windows keep error logs?

By default, Windows keeps logs until they reach their maximum size (usually 20MB), then overwrites the oldest entries. You can change retention settings in Event Viewer by right-clicking each log and selecting Properties.

Why don't I see my application's errors in the Event Log?

Your application needs to explicitly write to the Event Log using Windows APIs. Many applications log to their files instead. Check your application's logging configuration or implement Event Log integration using the .NET EventLog class or similar APIs.

What should I do when Event Viewer shows "Event log is corrupt"?

Try running sfc /scannow to check for system file corruption, or use wevtutil cl Application to clear and reset the log. You can also try rebuilding the log files with:

wevtutil sl Application /rt:false
wevtutil sl Application /rt:true

Contents

Do More with Less

Unlock high cardinality monitoring for your teams.