Как настроить ведение журнала .NET Core Azure - PullRequest
0 голосов
/ 06 сентября 2018

Я загрузил очень простое приложение в Azure на .NET Core 2.1.3.
Настроил ведение журнала службы приложений следующим образом: enter image description here

код:

public class Program
{
    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
    }

    public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>();
}

public class Startup
{
    private readonly ILogger<Startup> logger;
    public Startup(IConfiguration configuration, ILogger<Startup> logger)
    {
        this.Configuration = configuration;
        this.logger = logger;
    }

    public IConfiguration Configuration { get; }


    // This method gets called by the runtime. Use this method to add services to the container.
    // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
    public void ConfigureServices(IServiceCollection services)
    {
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        // Commented lines doesn't affect ...              
        //loggerFactory.AddConsole(this.Configuration.GetSection("Logging"));
        // loggerFactory.AddDebug();
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

        loggerFactory.AddAzureWebAppDiagnostics();

        this.logger.LogInformation("Loading::::::::::::::::::");


        app.Run(async (context) =>
        {
            this.logger.LogInformation("OnRequest::::::::::::::::::");
            await context.Response.WriteAsync("Loading...");
        });
    }
}

Проблема в том, что ведение журнала работает локально, но не на лазурном.Если я открою /Log Files/Application/afg4322-201809062011.log, мои сообщения OnRequest:::::::::::::::::: и Loading:::::::::::::::::: там не появятся.В настоящее время логика перехватывает все запросы и просто записывает сообщение в журнал.
Также я установил Microsoft.Extensions.Logging.AzureAppServices и устранение неполадок https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/azure-apps/troubleshoot?view=aspnetcore-2.1#aspnet-core-module-stdout-log ничего не работает.

Как записать сообщение в приложение Azure?Может быть, мне не хватает какой-то простой настройки?

applicationSettings.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    },
    "Console": {
      "IncludeScopes": "true"
    }
  }
}

Я проверил эту статью - Ядро Asp.net Core ведение журнала веб-приложения - Как включить журналы приложений в Azure для приложения Net Core 2?

Я пытаюсь избежать предложения от Ilya Chernomordik, где он говорит установить <aspNetCore stdoutLogEnabled="true" /> и изменить SourceSwitch,Я думаю, что это не правильное решение.

1 Ответ

0 голосов
/ 06 сентября 2018

А нашел решение.
Приложение было опубликовано в режиме Release, поэтому я добавил appsettings.Production.json:

{
  "Logging": {
    "LogLevel": {
      "Default": "Trace",
      "System": "Information",
      "Microsoft": "Information"
    }
  }
}

И изменил мой код следующим образом:

var l = loggerFactory.CreateLogger<Startup>();
l.LogInformation("OnRequest:::::::::Info:::::::::");
l.LogDebug("OnRequest:::::::::Debug:::::::::");
l.LogError("OnRequest::::::::::::::Error::::");
l.LogWarning("OnRequest::::::::::::Warning::::::");
l.LogTrace("OnRequest:::::::::::::Trace:::::");
l.LogCritical("OnRequest::::::::::::::Critical::::");
await context.Response.WriteAsync("Loading...");

Вместо использования поля logger я получаю логгер от loggerFactory.

Теперь можно получать все сообщения в Streaming Logs на портале Azure:

2018-09-06 19:10:01.449 +00:00 [Information] WebApp.Startup: OnRequest:::::::::Info::::::::: 2018-09-06 19:10:01.449 +00:00 [Debug] WebApp.Startup: OnRequest:::::::::Debug::::::::: 2018-09-06 19:10:01.449 +00:00 [Error] WebApp.Startup: OnRequest::::::::::::::Error:::: 2018-09-06 19:10:01.449 +00:00 [Warning] WebApp.Startup: OnRequest::::::::::::Warning:::::: 2018-09-06 19:10:01.449 +00:00 [Trace] WebApp.Startup: OnRequest:::::::::::::Trace::::: 2018-09-06 19:10:01.449 +00:00 [Critical] WebApp.Startup: OnRequest::::::::::::::Critical::::

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