虽然才alpha4,vs2017还下不到,但已经可以用起来了。
step1:
Install-Package MiniProfiler.EntityFrameworkCore -Version 4.0.0-alpha9-00206
step2:
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
var initializer = new DiagnosticInitializer(new[] { new RelationalDiagnosticListener() });
initializer.Start();
}
.....
step3:
var profiler = MiniProfiler.StartNew("m");
using (profiler.Step("SqlProfile"))
{
// 你的代码
}
// 输出日志
if (profiler?.Root != null)
{
var p = profiler.Root;
Trace.WriteLine($"{p.Name}:{p.Id},{p.DurationMilliseconds} ms");
if (p.HasChildren)
{
p.Children.ForEach(x =>
{
Trace.WriteLine($"{p.Name}:{x.Name},st:{x.StartMilliseconds} ms,exec:{x.DurationMilliseconds} ms");
if (x.CustomTimings?.Count > 0)
{
foreach (var ct in x.CustomTimings)
{
Trace.WriteLine($"{p.Name}:Start {ct.Key} --- ");
ct.Value?.ForEach(y =>
{
Trace.WriteLine($"{p.Name}:{y.CommandString}");
Trace.WriteLine($"{p.Name}:Execute time :{y.DurationMilliseconds} ms,Start offset :{y.StartMilliseconds} ms,Errored :{y.Errored}");
});
Trace.WriteLine($"{p.Name}:End {ct.Key} --- ");
}
}
});
}
}
profiler?.StopAsync(true).ConfigureAwait(false);
return null;