Appulse.Core 1.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package Appulse.Core --version 1.0.1
                    
NuGet\Install-Package Appulse.Core -Version 1.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Appulse.Core" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Appulse.Core" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="Appulse.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Appulse.Core --version 1.0.1
                    
#r "nuget: Appulse.Core, 1.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Appulse.Core@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Appulse.Core&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=Appulse.Core&version=1.0.1
                    
Install as a Cake Tool

Appulse

Production-grade structured logging middleware for ASP.NET Core 8+.

Appulse captures HTTP traffic, in-code logs, and exceptions; stores them asynchronously via System.Threading.Channels for zero impact on the hot path; and provides a built-in realtime Blazor dashboard.

Features

  • Zero-blocking Hot Path: All log writes use System.Threading.Channels to decouple capture from DB I/O.
  • Granular HTTP Capture: Configure whitelist/blacklist to skip, partially log, or redact requests.
  • Structured Logging: Includes a Serilog Sink (WriteTo.Appulse()) to unify application logs and HTTP logs.
  • Data Sanitization: Mask sensitive headers and JSON body fields (e.g. Authorization, password) automatically before storage.
  • High-Performance Storage: Uses Dapper + UNNEST for true bulk inserts to PostgreSQL.
  • Embedded Realtime Dashboard: Blazor Server-based dashboard directly embedded in your app, updated via SignalR.
  • Auto Data Retention: Opt-in background job to clean up logs older than X days.

Getting Started

1. Install Packages

dotnet add package Appulse.AspNetCore
dotnet add package Appulse.Storage.Postgres
dotnet add package Appulse.Serilog

2. Configure Services

In your Program.cs:

using Appulse.AspNetCore;
using Appulse.Storage.Postgres;
using Serilog;
using Appulse.Serilog;

var builder = WebApplication.CreateBuilder(args);

// Configure Serilog
builder.Services.AddSerilog((services, config) =>
{
    config.WriteTo.Appulse(services);
});

// Add Appulse
builder.Services.AddAppulse(options =>
{
    // By default, dashboard requires the user to have the "AppulseAdmin" role.
    options.Dashboard.RequireAuthentication = !builder.Environment.IsDevelopment();
});

var connectionString = builder.Configuration.GetConnectionString("AppulseDb");
builder.Services.AddAppulsePostgres(connectionString);

var app = builder.Build();

// Add middlewares (must be early in the pipeline)
app.UseAppulse(); 

app.Run();

3. View the Dashboard

Run your application and navigate to /appulse to view the realtime dashboard.

Advanced Configuration

Data Sanitization

builder.Services.AddAppulse(options =>
{
    options.EnableSanitization = true;
    options.MaskedHeaders.Add("X-API-Key");
    options.MaskedBodyFields.Add("secretToken");
});

Data Retention

builder.Services.AddAppulse(options =>
{
    options.EnableDataRetention = true;
    options.RetentionDays = 30;
    options.RetentionRunInterval = TimeSpan.FromDays(1);
});

RBAC for Dashboard

By default, the dashboard requires users to have the AppulseAdmin role if RequireAuthentication = true. You can customize the required role:

builder.Services.AddAppulse(options =>
{
    options.Dashboard.RequiredRole = "SuperAdmin";
});

Architecture

Please check out our design documents in docs-internal/ for Architecture Decision Records (ADR).

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (7)

Showing the top 5 NuGet packages that depend on Appulse.Core:

Package Downloads
Appulse.Serilog

Production-grade structured logging middleware for ASP.NET Core 8+

Appulse.Capture

Production-grade structured logging middleware for ASP.NET Core 8+

Appulse.Storage

Production-grade structured logging middleware for ASP.NET Core 8+

Appulse.Dashboard

Production-grade structured logging middleware for ASP.NET Core 8+

Appulse.Client

Production-grade structured logging middleware for ASP.NET Core 8+

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.15 133 9/23/2026
1.0.14 197 9/2/2026
1.0.13 193 8/30/2026
1.0.12 204 8/27/2026
1.0.11 235 8/20/2026
1.0.10 228 8/20/2026
1.0.9 227 8/20/2026
1.0.8 229 8/20/2026
1.0.7 221 8/19/2026
1.0.6 230 8/19/2026
1.0.5 222 8/19/2026
1.0.4 214 8/18/2026
1.0.3 223 8/18/2026
1.0.2 215 8/18/2026
1.0.1 181 8/15/2026
1.0.0 190 8/14/2026
0.1.0-alpha 187 8/14/2026