
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:

App before searching
