Azure:如何在 Azure 的 ASP.NET 核心应用程序中写入和读取自定义日志消息?

Azure: How to write and read custom log messages in ASP.NET Core application in Azure?

我想实现以下目标:

  1. 在我的 ASP.NET 核心 Web 服务应用程序中有自定义日志语句。
  2. 将我的应用程序部署到 Azure(在我的例子中使用 Pulumi)。
  3. 调用网络服务以触发日志记录代码。
  4. 以编程方式或通过基于 Azure 浏览器的 GUI 读取记录的消息。

我的目标是 .NET 5.0。

在我的代码中,我做了这样的事情:

public class MyController : ControllerBase
{
    private readonly ILogger<MyController> _logger;
    public MyController(ILogger<MyController> logger) => _logger = logger;

    public async Task<ActionResult<something>> DoStuff()
    {
        _logger.LogInformation("Hello, World!");
        ...
    }
}

我的 Pulumi 代码包含这个:

    var app = new AppService(
        "kmsApp",
        new AppServiceArgs
        {
            Logs = new AppServiceLogsArgs
            {
                ApplicationLogs = new AppServiceLogsApplicationLogsArgs { FileSystemLevel = "Error" },
                DetailedErrorMessagesEnabled = true,
                FailedRequestTracingEnabled = true,
                HttpLogs = new AppServiceLogsHttpLogsArgs
                {
                    FileSystem = new AppServiceLogsHttpLogsFileSystemArgs { RetentionInDays = 1, RetentionInMb = 35 }
                }
            }
        },
        ...);

有了上面的内容,当我 运行 我的应用程序处于 Visual Studio 的调试模式时,我可以在“输出”窗格中看到日志消息。所以日志代码肯定会触发。但是当我将我的应用程序部署到 Azure 时,我不知道如何获取日志消息,而且我发现 Azure GUI 令人困惑。

我正在苦苦挣扎的是:

  1. 我需要在我的代码中进行哪些配置 - 例如我的 ProgramStartup 类?
  2. 中的 NuGet 包或东西
  3. 我需要在 Azure 中做什么配置?
  4. 在基于 Azure 浏览器的 GUI 中的什么位置可以查看这些日志消息?
  5. 如何以编程方式获取这些日志(通过 Pulumi 或原始 Azure API)?

当然,我已经查找过文档,但我发现文档错综复杂。其中大部分似乎与响应时间等诊断有关。我只想从我的代码中查看我自己的自定义日志消息...

像这样的帖子给出了 一些 提示,但是在阅读了帖子之后,我仍然不清楚如何 阅读 日志:

可能存在很好的文档和指南。请帮我找到它们。

提前致谢!

您有多种选择:

  1. 使用 PowerShell 中的 az webapp log 命令将您的应用程序配置为记录到文件
  2. 使用 PowerShell 中的 az webapp log tail 命令实时查看日志
  3. Configure 应用程序从 Azure 门户手动记录日志
  4. 为应用服务启用 Application Insights

要下载日志,请使用 az webapp log download 命令或使用 FTP

连接到日志目录

我想我明白了遗漏了什么。我做了两件事。

第一件事是将我在 Pulumi 中的错误级别从“错误”更改为“详细”:

ApplicationLogs = new AppServiceLogsApplicationLogsArgs { FileSystemLevel = "Verbose" },

另一件事是安装站点扩展:

  1. 转到 Azure 中的应用服务。
  2. 监控下的左侧菜单中,转到应用服务日志
  3. 单击显示 单击此处安装 ASP.NET 核心站点扩展以启用应用程序日志记录的横幅

之后我可以通过 运行 az webapp log tail .

查看日志

现在我只需要弄清楚如何使用 Pulumi 以编程方式执行此操作。