首页 > 解决方案 > 为什么我的 .NET Core 日志消息没有显示在 Azure 中?

问题描述

我尝试了各种尝试让日志记录在 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 应用服务日志设置如下所示:

在此处输入图像描述

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

在此处输入图像描述

我不知道接下来要尝试什么。

标签: c#azurelogging.net-core

解决方案


在您的 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 门户中,消息就在那里:

在此处输入图像描述


推荐阅读