π RootAlert: Real-time Exception Tracking & Alerts for .NET!
RootAlert is a powerful, lightweight real-time error tracking and alerting library for .NET applications. Whether you're building a small API or a large-scale enterprise system, RootAlert helps you monitor unhandled exceptions and get instant alerts in Microsoft Teams, Slack, and (soon) Email!
π₯ Why Use RootAlert?
β
Automatically capture unhandled exceptions via middleware.
β
Batch alerts to prevent spam while still getting timely notifications.
β
Multi-service alerting β Send error notifications to Teams, Slack, and Email.
β
Customizable batch intervals β Choose when to receive grouped alerts.
β
Rich error logs with request details, headers, and stack traces.
π¦ Installation & Setup
RootAlert is available on NuGet:
dotnet add package RootAlert --version 0.1.5
Or via Package Manager:
Install-Package RootAlert -Version 0.1.5
1οΈβ£ Add RootAlert to Your .NET Project
In Program.cs
, configure RootAlert with multiple alert destinations:
using RootAlert.Config;
using RootAlert.Extensions;
var builder = WebApplication.CreateBuilder(args);
var rootAlertOptions = new List<RootAlertOption>
{
new RootAlertOption
{
AlertMethod = AlertType.Teams,
WebhookUrl = "https://your-teams-webhook-url"
},
new RootAlertOption
{
AlertMethod = AlertType.Slack,
WebhookUrl = "https://your-slack-webhook-url"
}
};
var rootAlertSetting = new RootAlertSetting
{
BatchInterval = TimeSpan.FromSeconds(20),
RootAlertOptions = rootAlertOptions,
};
builder.Services.AddRootAlert(rootAlertSetting);
var app = builder.Build();
// β
Handle exceptions first
app.UseMiddleware<ExceptionHandlingMiddleware>();
// β
Then, log errors with RootAlert
app.UseRootAlert();
app.UseRouting();
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
app.Run();
β Now, RootAlert will capture all unhandled exceptions and send alerts to multiple services!
β οΈ Important Notes
β If an exception filter is added, RootAlert won't work.
Reason: Exception filters handle errors before middleware gets a chance to process them. Since RootAlert works as middleware, it will never see the exception if a filter catches it first.
β Solution: Ensure RootAlert is added after any existing exception-handling middleware.
If your application has a global exception-handling middleware, register RootAlert after it to ensure exceptions are logged correctly. Example:
app.UseMiddleware<ExceptionHandlingMiddleware>(); // Your existing middleware
app.UseRootAlert(); // Register RootAlert after the exception middleware
π Microsoft Teams Integration
RootAlert supports Microsoft Teams integration via:
- Incoming Webhooks (Connector) β Simple and quick setup. (Will be deprecated)
- Microsoft Teams Workflow API β Easier than Power Automate, with a built-in Webhook template.
πΉ Option 1: Using an Incoming Webhook (Connector)
This method is the easiest way to receive error alerts in a Teams channel.
π Steps to Get a Teams Webhook URL
- Open Microsoft Teams and go to the desired channel.
- Click "β¦" (More options) β Connectors.
- Find "Incoming Webhook" and click "Configure".
- Name it RootAlert Notifications and click Create.
- Copy the Webhook URL and use it in your RootAlert configuration.
πΉ Option 2: Using Microsoft Teams Workflow API (via Webhook Template)
This method is even easier than Power Automate and uses a built-in workflow to receive data via Webhook.
π₯ Watch this video for a step-by-step guide:
π YouTube Link: https://www.youtube.com/watch?v=jHTU_jUnswY
π Steps to Configure Teams Workflow API
-
Open Microsoft Teams and Go to Workflows
- Click on ββ¦β (More options) β Workflows. --> Create
-
Select "Post to a channel when a webhook request is received" Template
- Search for "Post to a channel when a webhook request is received" and select the ready-made template.
- Click Next to proceed.
-
Choose Team and Channel
- Select the Team where you want to post alerts.
- Choose the Channel where notifications should appear.
-
Copy the Webhook URL
- After selecting the Team and Channel, Teams will generate a Webhook URL.
- Copy this URL and use it in your RootAlert settings.
π¬ Slack Integration
πΉ How to Set Up a Slack Webhook
- Go to https://api.slack.com/apps.
- Create a new Slack App β Enable Incoming Webhooks.
- Click Add New Webhook to Workspace, choose a channel.
- Copy the Webhook URL and paste it in
RootAlertOptions
.
πΉ Example Slack Alert (Blocks & Sections Format)
RootAlert formats messages beautifully in Slack:
π¨ Example Error Alert
This is how RootAlert captures errors and logs detailed request information:
π Error ID: abc123
β³ Timestamp: 02/05/2025 4:02:41 AM
----------------------------------------------------
π REQUEST DETAILS
π URL: /weatherforecast
π‘ HTTP Method: GET
----------------------------------------------------
π© REQUEST HEADERS
π User-Agent: Mozilla/5.0
----------------------------------------------------
β οΈ EXCEPTION DETAILS
β Type: DivideByZeroException
π¬ Message: Attempted to divide by zero.
----------------------------------------------------
π STACK TRACE
at Program.Main() in Program.cs:line 54
at RootAlertMiddleware.Invoke()
----------------------------------------------------
π Coming Soon!
β Database Storage - Store logs in MSSQL and Postgres
For Redis ->> using storage with Redis
β Email Alerts via SMTP - Get notifications in your inbox.
β Severity Filtering - Customize alerts based on error level.
Top comments (0)