NimblePros.Metronome
0.4.0
dotnet add package NimblePros.Metronome --version 0.4.0
NuGet\Install-Package NimblePros.Metronome -Version 0.4.0
<PackageReference Include="NimblePros.Metronome" Version="0.4.0" />
paket add NimblePros.Metronome --version 0.4.0
#r "nuget: NimblePros.Metronome, 0.4.0"
// Install NimblePros.Metronome as a Cake Addin #addin nuget:?package=NimblePros.Metronome&version=0.4.0 // Install NimblePros.Metronome as a Cake Tool #tool nuget:?package=NimblePros.Metronome&version=0.4.0
Metronome by NimblePros
A simple tool for tracking Database and Http calls per ASP.NET Core request.
Installation
Install the NuGet package:
Install-Package NimblePros.Metronome
dotnet add package NimblePros.Metronome
Usage
Refer to the samples in the samples directory.
Wire up services
builder.Services.AddMetronome();
Add Middleware
Add the middleware near the top of the pipeline. Recommended to be used only in development environment.
if (app.Environment.IsDevelopment())
{
app.UseMetronomeLoggingMiddleware();
}
EF Core Query Tracking
builder.Services.AddDbContext<ApplicationDbContext>((provider, options) =>
options.UseSqlite(connectionString) // or any other provider
.AddInterceptors(provider.GetRequiredService<DbCallCountingInterceptor>())
);
HttpClient Tracking
// simple named client
builder.Services.AddHttpClient("Foo")
.AddMetronomeHandler();
// strongly typed client
builder.Services.AddScoped<IPostsService, PostsService>(); // interface is optional
builder.Services.AddHttpClient<IPostsService, PostsService>()
.ConfigureHttpClient(client =>
{
client.BaseAddress = new Uri("https://my-json-server.typicode.com/typicode/demo/");
})
.AddMetronomeHandler();
Expected Output
Log Output
When hitting individual pages or endpoints, you should see the following output in the console:
info: NimblePros.Metronome.CombinedCallLoggingMiddleware[0]
Database calls: 2, Total time: 6.4678 ms
info: NimblePros.Metronome.CombinedCallLoggingMiddleware[0]
HTTP calls: 1, Total time: 222.3137 ms
HTTP Headers
In addition, the information is added to a response header (unless configured not to do so):
Using the Information
You can use this to identify slow pages or endpoints and optimize them by adding caching, combining queries, or reducing the number of HTTP calls.
If you need help doing this in an effective way across your entire application, contact NimblePros. We do this all the time.
Product | Versions 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. |
-
net8.0
- Microsoft.AspNetCore.Http.Abstractions (>= 2.2.0)
- Microsoft.EntityFrameworkCore.Relational (>= 9.0.0)
- Microsoft.Extensions.DependencyInjection (>= 9.0.0)
- Microsoft.Extensions.Http (>= 9.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
* Now it's on net8