首页 > 解决方案 > .NET 5.0 应用程序的 Azure AppService 日志记录

问题描述

我有一个托管在 Azure AppService (linux) 上的 .NET 5.0 Web API 应用程序。问题是当我使用具有特定日志记录级别的记录器时,AppService 中的“日志流”始终显示具有“信息”级别的所有日志。

只是一个例子:

[ApiController, Route("Logs")]
public sealed partial class LogsController : ControllerBase
{
    private readonly ILogger<LogsController> Logger;

    public LogsController(ILogger<LogsController> logger)
    {
       this.Logger = logger;
    }

    [HttpPost(nameof(LogWarning))]
    public ActionResult LogWarning()
    {
        this.Logger.LogWarning("Simple warning");
        return this.Ok();
    }

    [HttpPost(nameof(LogError))]
    public ActionResult LogError()
    {
        this.Logger.LogError("Simple error");
        return this.Ok();
    }
}

但是,“日志流”显示的不是预期的“警告”和“错误”级别:

2021-09-02T10:26:27.237547810Z: [INFO]  [40m[1m[33mwarn[39m[22m[49m: Rpm.Api.Controllers.Admin.LogsController[0]
2021-09-02T10:26:27.237614110Z: [INFO]        Simple warning
2021-09-02T11:10:47.290208822Z: [INFO]  [40m[1m[33mfail[39m[22m[49m: Rpm.Api.Controllers.Admin.LogsController[0]
2021-09-02T11:10:47.290261622Z: [INFO]        Simple error

有没有办法解决这个问题?PS:所有应用程序日志记录配置都是开箱即用的。

标签: c#.netazureloggingazure-web-app-service

解决方案


我正在使用具有特定日志记录级别的记录器,AppService 中的“日志流”始终显示具有“信息”级别的所有日志。

正如在 Azure AppService (linux) 上托管的 .NET 5.0 Web API 应用程序中尝试的重现,您可以在日志流中看到所有日志,因为 Linux 中没有可用的选项来启用应用服务日志只有我们可以提供文件系统详细信息。如下图所示。

在此处输入图像描述

与我尝试使用 Windows 进行复制的方式相同,如果有任何错误、警告、信息、详细信息,我可以启用我想在日志流中查看的应用服务日志,如下图所示:

在此处输入图像描述

有关更多信息,请参阅以下链接:

. 启用应用程序日志记录(Linux/容器)| 女士文档。

. 使用 .NET 进行 Application Insights 日志记录 | 医学博士

. 使用日志流和 Azure 应用服务


推荐阅读