如何为 Azure 上的 Blazor 服务器端应用程序添加跟踪/日志记录消息? (首选应用服务日志)

How can I add tracing / logging messages for a Blazor Server Side App on Azure? (Preferred with App Service Logs)

我有一个在 Azure 上运行的 Blazor 服务器端应用程序。我想添加跟踪/日志消息 (_logger.LogInformation())。我更愿意使用 Azue 应用服务日志。但是,我对其他选择持开放态度。

我能够使用在 Azure 上运行的 .Net Core 中编写的 API 获取跟踪/日志消息。这些日志写入 Azure 应用服务日志。他们的类型是应用程序。

对于我的 Blazor 应用程序,我按照与 API 相同的步骤设置跟踪/日志记录。但是,当我在 Cloud Explorer 中检查日志文件时,没有创建 LogFiles 文件夹下的 Application 文件夹。

我确保我打开了 Azure 应用服务日志并设置了正确的级别。见下文。

我的Program.cs使用默认设置。我读到的应该自动设置日志记录。 (它来自我的 API)见下文。

下面是我添加的用于跟踪/日志记录的代码示例。

public class VpbDelegateAdminService : IVpbDelegateAdminService
{
    private readonly HttpClient _httpClient;
    private readonly IJsonSerializerWrapper _jsonSerializerWrapper;
    private readonly TokenProvider _tokenProvider;
    private readonly ILogger<VpbDelegateAdminService> _logger;

    public VpbDelegateAdminService(HttpClient httpClient, IJsonSerializerWrapper jsonSerializerWrapper, TokenProvider tokenProvider, ILogger<VpbDelegateAdminService> logger)
    {
        _httpClient = httpClient;
        _jsonSerializerWrapper = jsonSerializerWrapper;
        _tokenProvider = tokenProvider;
        _logger = logger;
    }
    
    public async Task<VpbDelegateListVm> GetVpbDelegatesAsync(int pageNo, string searchText)
    {
        _logger.LogInformation($"Argument(s)- pageNo: {pageNo}, searchText: {searchText ?? "null"}");

正如我上面提到的,我更愿意使用 Azure 应用服务日志。但是,如果 Blazor 无法做到这一点,或者如果有人成功使用其他选项与 Blazor 一起使用,我很想听听他们的消息。

感谢您的帮助。

我建议使用 Application Insights,对于基于 .NET 的应用程序,它为您提供了完成 APM 的绝佳方式。如果您想与 ILogger 一起使用,请查看 here. If you want to get started without ILogger then take a look here.

我自己想出来了。

通过执行此处的步骤,我能够使用应用服务日志让日志记录/跟踪与我的 Blazor 服务器端应用一起工作:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?view=aspnetcore-3.1 与以下步骤相关:AzureAppServices

步骤:(注意:这些步骤仅针对文件系统/文件流。我没有设置 blob):

1。更新应用设置:

    "AzureAppServicesFile": {
  "IncludeScopes": true,
  "LogLevel": {
    "Default": "Warning"
  }
}

2。为 Microsoft.Extensions.Logging.AzureAppServices

安装 nuget 包

3。使用以下代码更新 Program.cs:

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureLogging(logging => logging.AddAzureWebAppDiagnostics())
                .ConfigureServices(serviceCollection => serviceCollection
                    .Configure<AzureFileLoggerOptions>(options =>
                    {
                        options.FileName = "diagnostics-";
                        options.FileSizeLimit = 50 * 1024;
                        options.RetainedFileCountLimit = 5;
                    }))
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

4.为应用程序日志(文件系统)打开应用程序服务日志

5.将级别设置为信息

我的日志/跟踪(见下文)开始出现在 Cloud Explorer 中

_logger.LogInformation($"Argument(s)- pageNo: {pageNo}, searchText: {searchText ?? "null"}");

我希望这些步骤对其他人有所帮助。