Introduction
Tracking Task Schedule errors in Windows Servers used to be easier. We could select Task Schedule logs through the Event Viewer with just a few clicks. Then, based on the filters we applied, we could send an email to the relevant people. Unfortunately, this feature was removed quite a while ago. However, we are still fortunate to have two important tools. First, triggering alerts based on conditions after a new event log entry. Second, querying event log history with C#.
In this article, we will focus on the second option, examining Task Schedule errors with C# and setting up an email notification system for critical issues. At the end of the article, you will find the sample project I created.
Creating Project
We will create a simple .NET Framework ConsoleApp. The primary reason for not choosing .NET Core or .NET 5+ is to ensure that our application can run on older Windows Servers without the need for any framework installations or additional configurations. I will skip the project creation steps.
AppConfig Settings
First, we need to define the necessary settings in the appconfig file. If, like me, you plan to use this application on different servers, you can make the application settings more dynamic and easier to manage by configuring them this way. To create the App.Config in the project, right-click on the ConsoleApp, select New Item, and create your config file as shown below.
Once the file is created, update it as follows. You will need to adapt this configuration based on your own environment.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
</startup>
<appSettings>
<add key="FromEmail" value="{{From Email}}" />
<add key="ToEmails" value="{{To Emails}}" />
<add key="SmtpServer" value="{{Smtp Server}}" />
<add key="SmtpPort" value="{{Smtp port}}" />
<add key="SmtpUser" value="{{Smtp user name}}" />
<add key="SmtpPassword" value="{{Smtp password}}" />
<add key="EnableSsl" value="true" />
<add key="TrackingServerName" value="{{The server name of you want to monitoring}}" />
<add key="EventViewSource" value="Microsoft-Windows-TaskScheduler/Operational" />
</appSettings>
</configuration>
The most critical variable in the code above is the EventViewSource. The value we defined here, Microsoft-Windows-TaskScheduler/Operational, contains the history of the tasks that are being monitored in the Event Viewer.
Getting Task Errors From Event Viewer
After configuring the settings, we will quickly build the structure to read the Event Viewer within our main function, as shown below. Here, I focused on Task logs of the Error type. If you want, you can explore different log types or add date and time filters for more detailed results.
Email Sending
Now, we define our simple email sending structure.
I send the entire error converted to JSON format in the email. If you prefer, you can include only the variables you find necessary in the email, or you could convert the JSON to an HTML table as an option.
Summary
If you're not using a scheduling system like Hangfire, installing a separate application for each task, and looking for a simple solution to track these events rather than relying on specific tools, this method should help you.
You can review the project on GitHub by clicking here. inceleyebilirsiniz
See you again at new article. Have a nice day.
Top comments (0)