在控制台应用程序中使用迷你分析器时,是否可以从 Web 应用程序中获得相同级别的信息?理想情况下,我只想在控制台中自行托管 Web UI,但这看起来不太可能。
我的主要目标是获取在调用时执行的 sqlqueries 及其参数/运行时间。我已经尝试过 RenderPlainText() 解决方案,它远不如 webview 详细,而且似乎没有一个钩子可以用来在发生有趣的事情时记录其内容。
在控制台应用程序中使用迷你分析器时,是否可以从 Web 应用程序中获得相同级别的信息?理想情况下,我只想在控制台中自行托管 Web UI,但这看起来不太可能。
我的主要目标是获取在调用时执行的 sqlqueries 及其参数/运行时间。我已经尝试过 RenderPlainText() 解决方案,它远不如 webview 详细,而且似乎没有一个钩子可以用来在发生有趣的事情时记录其内容。
RenderPlainText()
由于人们似乎都想要各种复杂的数据,因此没有内置的方法来获得基于文本的完整分析器输出(盒子里有什么)。但是有几个选择!你可以:
profiler.GetTimingHierarchy()
可以将它们全部作为一个列表来获取,例如:var profiler = MiniProfiler.StartNew();
using (profiler.Step("MyStep"))
using (profiler.CustomTiming("sql", "Select *"))
{
// Stuff
}
profiler.Stop();
foreach (var timing in profiler.GetTimingHierarchy())
{
if (timing.HasCustomTimings)
{
foreach (var timingType in timing.CustomTimings)
{
Console.WriteLine(timingType.Key + " queries:");
foreach (var queryTiming in timingType.Value)
{
Console.WriteLine($" {queryTiming.DurationMilliseconds} ms - {queryTiming.CommandString}");
}
}
}
}
这将产生:
sql queries:
0.9 ms - Select *
.UserIdProvider
on 选项(默认为网页端的 IP 地址)。例如,在 ASP.NET Core 中:services.AddMiniProfiler(options =>
{
options.UserIdProvider = request => MyGetUserIdFunction(request);
});
使用第二个选项时,请注意,如果您从 MiniProfiler Web UI 中单击“共享”,则 URL 是一致的,并且所有发生变化的只是 GUID。您可以获取当前profiler.Id
并使用它来吐出一个方便的链接到您的控制台。