Jonathan Allen
Jonathan Allen

Reputation: 70327

How can I log how long each ASP.NET WebAPI call takes?

Is there a way to attack some sort of global logger so that I know how long each WebAPI request took?

Upvotes: 1

Views: 234

Answers (1)

Fred
Fred

Reputation: 1322

Yes, check out MiniProfiler.

It's got a lot of different adapters too- for example, I've used it with ServiceStack / Dapper, but it also works with MS vanilla WebApi / EF.

On localhost (or whatever criteria you use to turn the profiler on in your global app class), when you hit your site url's in the browser, you'll get a ui widget in the top right corner detailing total request time, serialization time, and database execution time (including the actual sql executed).

To view the last 100 requests, browse: ~/mini-profiler-resources/results

For more robust storage there are options here - sql server is supported out of the box. Use this create script and then set the storage provider for MiniProfiler:

MiniProfiler.Settings.Storage = new SqlServerStorage("..connectionstring...");

Or use Sqlite out of the box

You can even set multiple storage options. Examples here

When adding the profiler ui to view requests, it should look something like this

Upvotes: 1

Related Questions