Aws-lambda-dotnet: As configurações de registro não funcionam para o Serverless API Blueprint

Criado em 18 fev. 2019  ·  7Comentários  ·  Fonte: aws/aws-lambda-dotnet

Passos para reproduzir:

  1. Crie um novo aplicativo sem servidor usando ASP.NET Core Web API do Blueprint
  2. Corrija ValuesController para ter o seguinte código:
    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. Código de execução
  2. Usando o postman, acesse o Get ValuesController.

Posso ver 2 soluções possíveis aqui:
a) Emendar appsetings.json para a seção Logging em vez de Lambda.Logging
b) Corrija este arquivo aws-lambda-dotnet / blob / master / Libraries / src / Amazon.Lambda.AspNetCoreServer / AbstractAspNetCoreFunction.cs Linha 179 para não incluir a seção "Logging"

bug investigating

Todos 7 comentários

Vou começar a trabalhar na reprodução disso agora. Qual é a exceção / problema que você está vendo?

Eu esperava que "Este é um comentário DEBUG" apareça nos logs de depuração (aplicativo de console e CloudWatch). Eles não estão aparecendo nem um.

Olá @matheusmaximo , Não sei por que os logs de depuração não funcionam, mas pode estar relacionado a https://github.com/aws/aws-logging-dotnet/issues/52. Para você, pelo menos você já está usando a biblioteca de log Amazon.Lambda.Logging.AspNetCore correta se estiver usando o Serverless API Blueprint. Não acho que as soluções que você recomendou sejam adequadas. Se você tentar criar alguns logs com outros níveis de log, o que deve funcionar, você verá que ajustar os níveis de log no appsettings.json filtrará corretamente os níveis de log baixos.

Vou falar com @normj para saber mais sobre as complicações com logs de depuração.

Parece que temos um bug no Amazon.Lambda.AspNetCoreServer que não está puxando os níveis de log para o ILoggingBuilder. Vou investigar por que isso está acontecendo.

Você pode alterar o mínimo no código editando a classe que se estende de APIGatewayProxyFunction que geralmente é 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);
                });
        }
    }
}

Encontrei o problema na biblioteca que faz com que as configurações de registro não sejam lidas corretamente em appsettings.json https://github.com/aws/aws-lambda-dotnet/commit/0d3cdb39d3c72d45956ebc2f2e6612c3fde277cd

Vou resolver logo.

Acabei de lançar a versão 3.0.2 do Amazon.Lambda.AspNetCoreServer que corrige o bug com o registro não sendo lido da configuração.

Eu confirmo que isso resolveu o problema. Obrigado a todos!

Esta página foi útil?
0 / 5 - 0 avaliações