Alpha

Every ASP.NET Core request, opened up.

Two lines in Program.cs. Then every request shows its routing, handler, EF Core and ADO.NET queries, HttpClient and gRPC calls, messages, logs, and exceptions, on one timeline at /_wizelens.

2 lines
in Program.cs
0 code
for Npgsql, SqlClient, and MySqlConnector
.NET 10
built for it
Program.cs
builder.Services.AddWizeLens();
builder.Services.AddDbContext<ShopDb>(o =>
    o.UseNpgsql(cs).UseWizeLens());
builder.Services.AddHttpClient<OrdersClient>();
builder.Host.UseSerilog((ctx, log) => log.WriteTo.WizeLens());

var app = builder.Build();
app.UseWizeLens();
GET /api/customers · 263 ms
GET /api/customers263 ms
Routing0.03 ms
Handler CustomersController.Get248 ms
SELECT "c"."Id", "c"."Name" FROM "Customers"2.1 ms
GET orders-api/orders?customerId=…45 ms
SELECT "o"."Total" FROM "Orders"1.4 ms
info Loaded 8 customers

What gets captured.

Everything below lands in the same trace as the request that caused it.

Requests

  • ASP.NET Core hosting
  • Routing and handler time
  • Headers, user, tags
  • Response bodies (opt-in)

Databases

  • EF Core
  • Dapper
  • Any ADO.NET provider
  • Npgsql, SqlClient, MySqlConnector with no code

Calls out

  • HttpClient
  • Grpc.Net.Client
  • Grpc.AspNetCore

Messages

  • RabbitMQ.Client 7+
  • Azure Service Bus
  • MassTransit
  • Kafka (WizeLens.Kafka)

Logs

  • ILogger
  • Serilog (WizeLens.Serilog)
  • NLog (WizeLens.NLog)
  • Browser console lines

Metrics

  • Every Meter, no code
  • .NET runtime: CPU, memory, GC, thread pool
  • ASP.NET Core and Kestrel
  • Your own meters

Made for the way .NET apps run.

If you used Glimpse, you know this.

Open the hood on one request and see what it really did. WizeLens brings that back for ASP.NET Core, and follows the request into every service after it.

Survives dotnet watch.

Traces live in a small SQLite file next to your app, so a restart does not wipe them. If the file cannot be written, WizeLens keeps working in memory.

Wrap any connection.

Dapper or a provider WizeLens does not know? Wrap the connection and every command is captured.

new ProfiledDbConnection(new SqliteConnection(cs))

Never in production by accident.

WizeLens is on in Development only. Turn it on anywhere else yourself, with Enabled = true.

Mixing stacks? One trace across all of them.

A React front end, a .NET gateway, and a Node service follow the same rules and join the same trace.