【问题标题】:Scope Logging in Application InsightApplication Insight 中的范围日志记录
【发布时间】:2019-12-06 14:38:51
【问题描述】:

我们有一个 .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);
            }

我可以看到此输出,其中范围日志信息保存在“{原始格式}”中。但是,结构化日志记录不适用于该字段:

我有以下问题:

  1. 范围日志记录在 Application Insight 中的工作原理是什么?
  2. 这是查看范围信息的唯一方法吗?
  3. 有没有办法查看一个范围内的所有日志?
  4. 为什么结构化日志记录不适用于 {Original Format}?

【问题讨论】:

标签: c# logging .net-core azure-application-insights


【解决方案1】:

现在在 Application Insights 中可以使用范围日志记录(我使用的是 2.19.0 版)。而不是将格式字符串 + 参数传递给 BeginScope() 您应该传递名称-值对的字典,例如

using (logger.BeginScope(new Dictionary<string, object> 
         { { "TaskId" = taskId }, { "Action", "AssigningTask" } }))
{
    .. 
    logger.LogInformation("{taskId} is assigned", taskId);
    ...
}

当然,这里将taskId放在内部日志消息中有点多余。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 2022-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多