Azure 门户中的 logger.Log 语句在哪里?

Posted

技术标签:

【中文标题】Azure 门户中的 logger.Log 语句在哪里?【英文标题】:Where in Azure Portal are the logger.Log statements? 【发布时间】:2020-02-18 16:42:36 【问题描述】:

我有一个 .NET Core WebAPI 应用程序。该应用作为应用服务部署在 Azure 上。

在代码中,我像这样启用了 Application Insights

public static IWebHost BuildWebHost(string[] args) =>
    WebHost
    .CreateDefaultBuilder(args)
    .UseApplicationInsights()
    .UseStartup<Startup>()
    .ConfigureLogging((hostingContext, logging) =>
                          
        logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging")).SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Error);  
        logging.AddApplicationInsights(" xxxxx-xxxx-xxxx-xxxx--xxxxxxxxxxx").SetMinimumLevel(LogLevel.Trace);
    )
    .Build();

在控制器的构造函数和控制器的方法中,我有这些日志记录语句。

_logger.LogInformation("ApiController, information");
_logger.LogWarning("ApiController, warning");
_logger.LogCritical("ApiController, critical");
_logger.LogWarning("ApiController, error");
_logger.LogDebug("ApiController, debug");

在 Azure 门户中,我为我的应用服务启用了 Application Insights。这是来自门户的图片。

App Insights in Azure Portal

但是我在 Azure 门户中的哪里可以看到日志记录语句?

当我转到Application Insights -&gt; Logs 并查询时

search *

我可以看到对 API 的请求,但看不到日志语句。

Application Insights Log

日志语句在哪里?

【问题讨论】:

您好,如果回答有帮助,请帮忙accept it as answer,谢谢。 【参考方案1】:

首先,在代码中配置日志级别并不是一个好习惯。您可以在appsettings.json 文件中轻松配置日志级别。所以在Program.cs -> public static IWebHost BuildWebHost 方法中,将代码改成如下:

public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseApplicationInsights()
                .UseStartup<Startup>()
                .Build();

然后在appsettings.json(也右键文件->属性->设置“复制到输出目录”为“如果较新则复制”):


  "Logging": 
    "IncludeScopes": false,
    "ApplicationInsights": 
      "LogLevel": 
        "Default": "Trace"
      
    ,
    "Console": 
      "LogLevel": 
        "Default": "Warning"
      
    
  ,
  "ApplicationInsights": 
    "InstrumentationKey": "the key"
  

在控制器中,如ValuesController:

    public class ValuesController : Controller
    
        private readonly ILogger _logger;
        public ValuesController(ILoggerFactory loggerFactory)
        
            _logger = loggerFactory.CreateLogger<ValuesController>();
        

        // GET api/values
        [HttpGet]
        public IEnumerable<string> Get()
        
            _logger.LogInformation("ApiController, information");
            _logger.LogWarning("ApiController, warning");
            _logger.LogCritical("ApiController, critical");
            _logger.LogWarning("ApiController, error");
            _logger.LogDebug("ApiController, debug");

            return new string[]  "value1", "value2" ;
        
     

运行项目,然后等待几分钟(应用洞察总是需要 3 到 5 分钟或更长时间才能显示数据)。然后进入 azure 门户 -> 应用程序洞察日志,记住 ILogger 写入的所有日志都存储在“traces”表中。只需编写“traces”之类的查询并指定适当的时间范围,您应该会看到如下所有日志:

【讨论】:

以上是关于Azure 门户中的 logger.Log 语句在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

通过新门户中的 Azure 通知中心发送通知

如何通过门户增加 Azure 中的磁盘大小?

新 Azure 预览门户中的云服务(2014 年 4 月)

为啥不能配置 Azure 诊断以通过新的 Azure 门户使用 Azure 表存储?

azure 门户中的“HTTP 标头之一的值格式不正确”

微软azure云计算在门户中创建 Windows 虚拟机部署web网站