.netcore 2.1记录到Azure Blob的问题

时间:2019-07-08 17:41:59

标签: azure logging .net-core azure-blob-storage

我有一个.netcore 2.1 API。我正在尝试在Azure Blob中进行一些记录。

我一直在.netcore 2.2 api中使用Microsoft.Extensions.Logging.AzureAppServices(2.2.0版)完全没有问题,它可以将信息漂亮地记录到Azure blob。

但是,当我在.netcore 2.1中使用Microsoft.Extensions.Logging.AzureAppServices(版本2.1.1)尝试相同的代码时,它无法记录信息(即使我从API端点获得了所需的信息)。

我在program.cs中尝试过的代码

public static void Main(string[] args)
    {
        var host = CreateWebHostBuilder(args).Build();

        var logger = host.Services.GetRequiredService<ILogger<Program>>();
        logger.LogInformation("Main() method.");

        host.Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .ConfigureLogging(logging =>
            {
                logging.AddAzureWebAppDiagnostics();
            })
            .ConfigureServices(serviceCollection => serviceCollection
                .Configure<AzureFileLoggerOptions>(options =>
                {
                    options.FileName = "azure-diagnostics-";
                    options.FileSizeLimit = 50 * 1024;
                    options.RetainedFileCountLimit = 5;
                }).Configure<AzureBlobLoggerOptions>(options =>
                {
                    options.BlobName = "Log.txt";
                }))
            .UseStartup<Startup>();
}

天蓝色后,我添加了如下图所示的设置。

enter image description here

现在要对其进行测试,我已经在starup.cs,program.cs和controller.cs中添加了一些日志记录。

来自Startup.cs的日志被打印到输出Blob中,但其他CS文件无法将信息记录到Blob中。

有人知道我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

要配置提供程序设置,请使用AzureFileLoggerOptionsAzureBlobLoggerOptions,如以下示例所示:

public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
        .ConfigureLogging(logging => logging.AddAzureWebAppDiagnostics())
        .ConfigureServices(serviceCollection => serviceCollection
                .Configure<AzureFileLoggerOptions>(options =>
                {
                    options.FileName = "azure-diagnostics-";
                    options.FileSizeLimit = 50 * 1024;
                    options.RetainedFileCountLimit = 5;
                }).Configure<AzureBlobLoggerOptions>(options =>
                {
                    options.BlobName = "log.txt";
                }))
        .UseStartup<Startup>();

或如下所示:

public void ConfigureServices(IServiceCollection services)
    {
        //...
        services.Configure<AzureFileLoggerOptions>(Configuration.GetSection("AzureLogging"));
    } 

Appsettings.json

"AzureLogging": {
     "FileName" : "azure-diagnostics-",
     "FileSizeLimit": 50024,
     "RetainedFileCountLimit": 5
}

当您部署到App Service应用程序时,该应用程序将接受Azure门户的App Service页面的App Service日志部分中的设置。更新以下设置后,更改将立即生效,而无需重新启动或重新部署应用程序。

  • 应用程序日志记录(文件系统)
  • 应用程序日志记录(blob)

enter image description here

请确保进行上述设置。希望有帮助。