在azure应用程序服务中的哪里可以找到我的日志?

时间:2019-06-30 13:40:02

标签: c# azure-application-insights azure-web-app-service

我已经启用了登录运行在azure Web服务上的Web应用程序的功能,如果启用了日志流,则可以看到日志输出,但是找不到可以在其中找到日志的GUI,所以它们在哪里?

我已经在program.cs中定义了自己的日志记录

WebHost.CreateDefaultBuilder(args)
                .UseApplicationInsights()
                .ConfigureLogging((hostingContext, logging) =>
                {
                logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
                logging.AddConsole();
                logging.AddDebug();
                logging.AddEventSourceLogger();
                logging.AddApplicationInsights();
                })
                .UseStartup<Startup>();

在我的API控制器中,我只是在做

 private readonly ILogger _logger;
        public ReveController(ILogger<Controller> logger)
        {
            _logger = logger;
        }

之后

_logger.LogInformation("Test test test");

我在appsettings.json中的日志记录设置如下

"Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },

我查看了应用服务和App Insights,但在GUI的任何地方都找不到我的条目?

我想念什么吗?

2 个答案:

答案 0 :(得分:2)

使用Ilogger界面编写的日志最终成为应用程序见解中的跟踪。您可以使用Search in Application InsightsLog Analytics来查看它们。

App Insights的故障日志级别设置为Warning,每个appsettings.json的其他目标的日志级别也设置为。您可以更改它以匹配您的代码,以便记录所有严重性信息或更高级别的信息:

使用AddFilterSource)在代码中:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
  WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
  .ConfigureLogging(
        builder =>
        {
            // Providing an instrumentation key here is required if you're using
            // standalone package Microsoft.Extensions.Logging.ApplicationInsights
            // or if you want to capture logs from early in the application startup
            // pipeline from Startup.cs or Program.cs itself.
            builder.AddApplicationInsights();

            // Optional: Apply filters to control what logs are sent to Application Insights.
            // The following configures LogLevel Information or above to be sent to
            // Application Insights for all categories.
            builder.AddFilter<Microsoft.Extensions.Logging.ApplicationInsights.ApplicationInsightsLoggerProvider>
                             ("", LogLevel.Information);
        }
    );

或在配置文件中,通过在“日志记录”部分(Source)的“ ApplicationInsights”部分中设置LogLevel:

{
  "Logging": {
    "ApplicationInsights": {
      "LogLevel": {
        "Default": "Information",
      }
    },
    "LogLevel": {
      "Default": "Information"
    }
  },
}

顺便,请注意以下事项:

  

默认项目模板调用CreateDefaultBuilder,它将添加以下日志记录提供程序:

     
      
  • 控制台
  •   
  • 调试
  •   
  • EventSource(从ASP.NET Core 2.2开始)
  •   

因此您不必像现在那样在代码中执行此操作。它还将读取配置。 (Source

更多信息
请参阅this issue,以获取有关默认日志级别为Warning的讨论,以及为什么没有appsettings.json中的ApplicationInsights部分不能在配置中覆盖它的原因。

详细了解日志级别here

详细了解过滤器(包括用于日志级别的过滤器)here

答案 1 :(得分:1)

您已将默认日志级别设置为Warning,但日志级别为Information。这将阻止Application Insights接收日志输出。