top of page

EventLogWizard app

Windows Event Log Viewer: Streamlining System Troubleshooting

​This application, a Windows Event Log Viewer, empowers users to efficiently monitor and troubleshoot system logs, providing a user-friendly interface to navigate the often complex world of event data. It's designed to be a flexible base script, adaptable to diverse troubleshooting scenarios. While the core functionality is robust, it's intended to be customized further to meet specific needs.

​

Core Functionality and Implementation

The application's functionality is built around several key functions, each designed to handle a specific aspect of event log analysis:

  • start_search(): This function initiates the search process, orchestrating the retrieval and filtering of event log data based on user-defined criteria.

  • get_all_log_names(): Retrieves a list of all available event logs on the target server, providing the user with a comprehensive selection to choose from. This function is crucial for ensuring the user can access all relevant logs.

  • get_filtered_logs(): This is the heart of the application. It takes various search parameters (server, log name keywords, event type, event category, event ID, source name, keywords, start/end dates and times, maximum events, and event levels) and applies them to filter the event logs. This granular filtering is essential for quickly isolating specific events of interest.

  • toggle_remote(): Enables connection to remote computers over the domain, expanding the scope of log analysis beyond the local machine. This is particularly useful for administrators managing multiple systems.

  • create_gui(): Constructs the graphical user interface, including elements for log selection, filter input, output display, and controls. Global variables are used to manage the state of these elements.

  • show_about(): Displays an "About" dialog, providing information about the application. It also integrates the help menu and menubar for user assistance.

  • clear_fields(): Clears all input fields, allowing for a fresh search with new criteria.

  • on_search(): Handles the search button click event. It gathers the selected search filters, including domain login credentials (if needed), date and time ranges, and then calls get_filtered_logs() to perform the search.

  • format_log_details(): Formats the retrieved log entries for display, including decoding specific event codes (like logon failure and Kerberos failure codes) to provide more human-readable information. This function significantly enhances the value of the raw event log data.

​

Leveraging Python Packages

The application utilizes several powerful Python packages:

  • win32evtlog, win32evtlogutil, win32security: These packages provide access to the Windows Event Log API, enabling the application to read and filter event logs. They are fundamental to the application's core functionality.

  • tkinter: This is Python's standard GUI framework, used to create the application's user interface. ttk (themed Tkinter) provides enhanced widgets for a more modern look and feel.

  • pywintypes: Provides support for Windows-specific data types and constants, often required when working with the win32 packages.

  • tkcalendar: Provides a calendar widget for easy date selection, simplifying the process of specifying date ranges for filtering.

  • datetime: Used for working with dates and times, essential for handling time-based filtering.

  • threading: Enables the application to perform long-running tasks (like retrieving logs from a remote server) in a separate thread, preventing the GUI from freezing and improving responsiveness.

​

Why This Application is Helpful

This Windows Event Log Viewer offers several key advantages:

  • Simplified Log Analysis: It provides a user-friendly interface to navigate and filter event logs, making it easier to find relevant information compared to using the standard Windows Event Viewer.

  • Enhanced Information: The application decodes specific event codes (e.g., logon failures, Kerberos failures), providing more detailed and actionable information about the events. This helps in faster root cause analysis.

  • Remote Server Support: The ability to connect to remote servers expands the scope of log analysis, enabling administrators to monitor multiple systems from a central location.

  • Customizable Filtering: Granular filtering options allow users to quickly isolate specific events based on various criteria, saving time and effort.

  • Extensible Design: The script-based nature of the application makes it easy to customize and extend its functionality to meet specific needs.

​

Further Development

While functional, this application is designed as a base. Future development could include features like:

  • Real-time Monitoring: Continuously monitor event logs for specific events and trigger alerts.

  • Log Aggregation: Collect logs from multiple servers into a central repository for easier analysis.

  • Reporting: Generate reports based on event log data.

  • Integration with other tools: Integrate with ticketing systems or other monitoring tools.

​

This project demonstrates my ability to work with the Windows Event Log API, develop user-friendly interfaces using Tkinter, and utilize threading for improved application performance. It showcases my understanding of system troubleshooting and my commitment to creating tools that streamline complex tasks.

​​

​

You can find my project on my GitHub profile:

SnowY4you/EventLogWizard: Advanced Windows Event Log Viewer

eventlogwizard.png

App before searching

eventlogwizard2.png

App after searching

bottom of page