我有一个服务,它执行一些 REST API 调用,并且我在 API 调用之前和之后进行自定义日志记录:
_logger.LogTrace("Invoked API {ApiName}", new { ApiName = apiName, Data = json });
var httpResponse = await _httpClient.PostAsync(url, new StringContent(json));
httpResponse.EnsureSuccessStatusCode();
var responseDto = await JsonSerializer.DeserializeAsync<ResponseDto>(httpResponse.Content.ReadAsStream())!;
if (!responseData.Success)
{
_logger.LogWarning("Failed API {ApiName}", new { ApiName = apiName, Data = await httpResponse.Content.ReadAsStringAsync() });
}
HttpClient 还会生成日志。
关联日志的推荐方法是什么,以便我可以在应用程序洞察门户中轻松找到相关日志?
我希望 HttpClient 或可能的 ADO.NET 等生成的所有日志都与我的自定义日志相关。
编辑:我知道 ASP.NET Core MVC 或 Pages 会根据每个请求使用 OperationTelemetry 自动关联日志。对于其他场景,我需要相同的内容:控制台应用程序、富客户端、blazor 服务器(使用 websockets 而不是请求)
最佳答案
因此,遥测仅在属于操作的一部分时才会自动链接。例如,当 Controller 收到请求时,就会创建一个操作。这是由运行时完成的。
如果您没有待处理的操作,则需要手动添加上下文,以便可以关联遥测数据,或者可以创建自己的操作以将遥测数据与该特定操作相关联。您可以这样做:
using (var op = _telemetryClient.StartOperation<DependencyTelemetry>($"Invoke API {ApiName}"))
{
_logger.LogTrace("Invoked API {ApiName}", new { ApiName = apiName, Data = json });
var httpResponse = await _httpClient.PostAsync(url, new StringContent(json));
httpResponse.EnsureSuccessStatusCode();
var responseDto = await JsonSerializer.DeserializeAsync<ResponseDto>(httpResponse.Content.ReadAsStream())!;
if (!responseData.Success)
{
op.Telemetry.Success = false;
_logger.LogWarning("Failed API {ApiName}", new { ApiName = apiName, Data = await httpResponse.Content.ReadAsStringAsync() });
}
}
现在所有遥测数据都将在操作范围内关联。
关于.net - 如何使用 ILogger 和应用程序洞察关联相关的自定义日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74042775/
多年来,这一直是令人困惑和沮丧的根源。假设您导入了一个文档记录特别差的模块,并且您需要的某个方法只有 **kwargs 作为其参数,您应该如何知道该方法正在检查哪些键? def test(**kwar
一:背景 1. 讲故事 前几天写了一篇 如何洞察 .NET程序 非托管句柄泄露 的文章,文中使用 WinDbg 的 !htrace 命令实现了句柄泄露的洞察,在文末我也说了,Wi
所以我正在尝试使用 Facebook Python API提取我们的参与数据(点赞、分享等,基本上是 Facebook 网站上“洞察”选项卡下的所有内容)。 我已设法通过 API 建立连接并使访问 t
我注意到从 facebook insights 返回的数据在从 API 获取数据时与从 CSV 导出数据中获取时存在一致的差异。例如,对于某个指标 (page_impressions_unique_d
我用 Python 创建了一个 XGBoost 模型,并使用以下代码来更好地理解该模型: xgb.plot_importance(model) 或 xgb.plot_importance(model,
谁能告诉我 Visual Studio 的内存转储中概述的行为类型 正常吗?例如,StackExchange.Redis.PhysicalConnection 在包含大小(字节)上运行得那么高吗?还是
谁能告诉我 Visual Studio 的内存转储中概述的行为类型 正常吗?例如,StackExchange.Redis.PhysicalConnection 在包含大小(字节)上运行得那么高吗?还是