Aws-lambda-dotnet: Параметры ведения журнала не работают для Serverless API Blueprint

Созданный на 18 февр. 2019  ·  7Комментарии  ·  Источник: aws/aws-lambda-dotnet

Действия по воспроизведению:

  1. Создайте новое бессерверное приложение с помощью веб-API ASP.NET Core из Blueprint
  2. Измените ValuesController, чтобы он имел следующий код:
    private readonly ILogger<ValuesController> _logger;

    public ValuesController(ILogger<ValuesController> logger)
    {
        _logger = logger;
    }

    // GET api/values
    [HttpGet]
    public IEnumerable<string> Get()
    {
        _logger.LogDebug("This is a DEBUG comment");
        return new string[] { "value1", "value2" };
    }
  1. Выполнить код
  2. Используя почтальон, нажмите ValuesController Get.

Здесь я вижу 2 возможных решения:
a) Измените appsetings.json на раздел Logging вместо Lambda.Logging
б) Измените этот файл aws-lambda-dotnet / blob / master / Libraries / src / Amazon.Lambda.AspNetCoreServer / AbstractAspNetCoreFunction.cs Строка 179, чтобы не включать раздел «Ведение журнала».

bug investigating

Все 7 Комментарий

Я собираюсь начать работу над воспроизведением этого сейчас. Какое исключение / проблему вы наблюдаете?

Я ожидал, что «Это комментарий DEBUG» появится в журналах отладки (консольное приложение и CloudWatch). Ни один из них не появляется.

Привет @matheusmaximo , я не уверен, почему журналы отладки не работают, но это может быть связано с https://github.com/aws/aws-logging-dotnet/issues/52. Что касается вас, по крайней мере, вы уже используете правильную библиотеку ведения журналов Amazon.Lambda.Logging.AspNetCore, если вы используете бессерверный API Blueprint. Я не думаю, что рекомендуемые вами решения подходят. Если вы попытаетесь создать несколько журналов с другими уровнями журналов, которые должны работать, вы увидите, что настройка уровней журналов в appsettings.json правильно отфильтрует низкие уровни журналов.

Я поговорю с @normj, чтобы узнать больше о сложностях с журналами отладки.

Похоже, у нас есть ошибка в Amazon.Lambda.AspNetCoreServer, которая не загружает уровни журнала в ILoggingBuilder. Я выясню, почему это происходит.

Вы можете изменить минимум кода, отредактировав класс, который расширяется от APIGatewayProxyFunction который обычно равен LambdaEntryPoint

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;

namespace LambdaLoggingDebugTest
{
    public class LambdaEntryPoint : Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction
    {
        protected override void Init(IWebHostBuilder builder)
        {
            builder
                .UseStartup<Startup>()
                .ConfigureLogging((hostingContext, logging) =>
                {
                    logging.SetMinimumLevel(LogLevel.Trace);
                });
        }
    }
}

Я обнаружил проблему в библиотеке, из-за которой параметры ведения журнала неправильно считываются из appsettings.json https://github.com/aws/aws-lambda-dotnet/commit/0d3cdb39d3c72d45956ebc2f2e6612c3fde277cd

Я скоро исправлю.

Я только что выпустил версию 3.0.2 Amazon.Lambda.AspNetCoreServer, в которой исправлена ​​ошибка, из-за которой ведение журнала не читается из конфигурации.

Я подтверждаю, что это устранило проблему. Спасибо вам всем!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги