Как настроить ведение журнала Azure после обновления до ASP.NET Core 2.2 - PullRequest
0 голосов
/ 29 января 2019

При обновлении с ASP.NET Core 2.1 до ASP.NET Core 2.2 и следуя официальному руководству по документации .

Возникла проблема с записью новой конфигурации ведения журнала в Запуск.cs .Конкретно проблемы с обработкой AzureWebAppDiagnostics .

Старая конфигурация состояла из следующей конфигурации:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    ...
    loggerFactory.AddApplicationInsights(app.ApplicationServices);
    loggerFactory.AddAzureWebAppDiagnostics(
        new AzureAppServicesDiagnosticsSettings
        {
            OutputTemplate = "{Timestamp:yyyy-MM-dd HH:mm:ss zzz} [{Level}] {RequestId}-{SourceContext}: {Message}{NewLine}{Exception}"
        }
    );
}

И AddAzureWebAppDiagnostics , и AzureAppServicesDiganosticsSettings помечен как устаревший.Позднее предлагается использовать AzureBlobLoggerOptions .В руководстве говорится, что конфигурацию ведения журнала следует переместить примерно так:

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddLogging(builder => builder
        .AddConsole()
        .AddAzureWebAppDiagnostics());
    ...
}

Однако я понятия не имею, как правильно добавить конфигурацию в ILoggingBuildler И, в качестве дополнительного бонуса, AzureBlobLoggerOptions не позволяет использовать пользовательский шаблон вывода. AddApplicationInsights также отсутствует в ILoggingBuilder.

Любые предложения о том, как заставить это работать так, как раньше?

Ответы [ 3 ]

0 голосов
/ 27 февраля 2019

Для пользовательского OutputTemplate требовалась зависимость от Serilog, который был удален для 2.2, поэтому его нет в классах параметров файла или BLOB-объектов.

Для 2.2 рекомендуется настраивать ведение журнала в Program.cs, а не в Startup.CS;Вот пример использования AddAzureWebAppDiagnostics и классов параметров:

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>();

Для этого требуется пакет NuGet Microsoft.Extensions.Logging.AzureAppServices и следующие операторы using:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging.AzureAppServices;
using Microsoft.Extensions.Logging;
0 голосов
/ 29 апреля 2019

В 2.2 я получил эту работу, разделив конфигурацию между Program.cs и Startup.cs:

Добавьте это в CreateWebHostBuilder в Program.cs:

  .ConfigureLogging((hostingContext, logging) =>
    {
        logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
        logging.AddConsole();
        logging.AddDebug();
        logging.AddEventSourceLogger();
        logging.AddAzureWebAppDiagnostics();
    })

Добавьте это в ConfigureServicesв Startup.cs:

services.Configure<AzureFileLoggerOptions>(options =>
{
options.FileName = "azure-diagnostics-";
options.FileSizeLimit = 50 * 1024;
options.RetainedFileCountLimit = 5;
});

Этого было достаточно, чтобы я начал видеть сообщения в журнале службы приложений Azure;вам нужен пакет Nuget Microsoft.Extensions.Logging.AzureAppService и соответствующие операторы использования также:

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.FileProviders;
using Microsoft.Extensions.Logging.AzureAppServices;
0 голосов
/ 06 февраля 2019

Понимание немного медленно для вечеринки.Существует новый пакет с поддержкой сборщика журналов, например

<PackageReference Include="Microsoft.Extensions.Logging.ApplicationInsights" Version="2.9.0-beta3" />

. Без этого вам придется использовать устаревший способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...