代码之家  ›  专栏  ›  技术社区  ›  Bob Horn

为什么不是我的。NET Core日志消息是否显示在Azure中?

  •  0
  • Bob Horn  · 技术社区  · 6 年前

    我尝试过各种方法让日志记录在Azure中显示,但都不起作用。我最近的尝试是:
    https://ardalis.com/configuring-logging-in-azure-app-services/

    我在我的项目中添加了以下内容:
    https://www.nuget.org/packages/Microsoft.Extensions.Logging.AzureAppServices

    在Programs.cs中,我这样做了:

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>()
                    .ConfigureLogging(logging =>
                    {
                        logging.ClearProviders();
                        logging.AddConsole();
                        logging.AddAzureWebAppDiagnostics();
                    });
                });
    

    我在API控制器方法中有这样一行,它被调用:

    _logger.LogWarning("Test warning logging.");
    

    我也试着用这种方式记录:

    Trace.TraceWarning("Test warning logging (trace).");
    

    我的Azure应用服务日志设置如下:

    enter image description here

    然而,当我进入日志流时,从来没有任何消息:

    enter image description here

    我不知道下一步该尝试什么。

    0 回复  |  直到 6 年前
        1
  •  1
  •   Ivan Glasenberg    6 年前

    在您的Programs.cs中 ConfigureLogging(logging=>{xxx}) 不应放置在 ConfigureWebHostDefaults 。您应该在Programs.cs中使用以下代码:

     public static IHostBuilder CreateHostBuilder(string[] args) =>
                Host.CreateDefaultBuilder(args)
                    .ConfigureLogging(logging=> {
                        logging.ClearProviders();
                        logging.AddConsole();
                        logging.AddAzureWebAppDiagnostics();
                    })
                    .ConfigureWebHostDefaults(webBuilder =>
                    {
                        webBuilder.UseStartup<Startup>();
                    });
    

    然后我使用这行代码发送日志:

    _logger.LogInformation("this is an information from index page...");
    

    然后在azure门户中,消息就在那里:

    enter image description here