我们有一个 .net 核心 Web API,我们使用了 Microsoft.Extensions.Logging 命名空间中可用的内置记录器。
我们已将此记录器与 Application Insight 集成。
我可以看到所有日志都已正确记录。但是,我看不到范围的日志记录信息
下面是我的代码:
var taskId = Guid.NewGuid();
using (logger.BeginScope("Assigning Task {taskId}.",taskId))
{
logger.LogInformation("{taskId} is assigned",taskId);
}
我可以看到此输出,其中范围日志信息以“{Original Format}”形式保存。但是,结构化日志记录不适用于该字段:
我有以下问题:
- 范围日志记录在 Application Insight 中如何工作?
- 这是查看范围信息的唯一方式吗?
- 有没有办法查看一个范围内的所有日志?
- 为什么结构化日志记录不适用于{Original Format}?
最佳答案
Scopes 日志现在可以在 Application Insights 中使用(我使用的是 2.19.0 版)。与其将格式字符串 + 参数传递给 BeginScope(),不如传递一个名称-值对字典,例如
using (logger.BeginScope(new Dictionary<string, object>
{ { "TaskId" = taskId }, { "Action", "AssigningTask" } }))
{
..
logger.LogInformation("{taskId} is assigned", taskId);
...
}
当然,这里将 taskId 放在内部日志消息中有点多余。
关于c# - Application Insight 中的范围日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57250730/