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

问题描述 投票:0回答:2

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

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

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

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

enter image description here

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

enter image description here

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

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 的其他选项,我有兴趣了解它们。

感谢您的帮助。

azure azure-web-app-service blazor blazor-server-side azure-appservice
2个回答
1
投票

我自己想出来了。

按照此处的步骤,我能够使用应用服务日志与我的 Blazor 服务器端应用程序一起使用日志记录/跟踪:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/logging/? view=aspnetcore-3.1 与以下步骤相关:AzureAppServices

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

1. 更新

appsettings.json

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

2. 安装 nuget 包

Microsoft.Extensions.Logging.AzureAppServices

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"}");

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


0
投票

我建议使用 Application Insights,对于基于 .NET 的应用程序,它为您提供了执行完整 APM 的绝佳方法。如果您想与 ILogger 一起使用,请查看这里。如果您想在不使用 ILogger 的情况下开始使用,请查看此处

© www.soinside.com 2019 - 2024. All rights reserved.