Aws-lambda-dotnet: 记录设置不适用于无服务器API蓝图

创建于 2019-02-18  ·  7评论  ·  资料来源: aws/aws-lambda-dotnet

重现步骤:

  1. 使用Blueprint中的ASP.NET Core Web API创建新的无服务器应用程序
  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
b)修改此文件aws-lambda-dotnet / blob / master / Libraries / src / Amazon.Lambda.AspNetCoreServer / AbstractAspNetCoreFunction.cs第179行,使其不包括“记录”部分

bug investigating

所有7条评论

我现在将开始着手对此进行再现。 您看到的异常/问题是什么?

我期望调试日志(控制台应用程序和CloudWatch)中显示“这是调试注释”。 他们都没有出现。

@matheusmaximo ,我不确定为什么调试日志不起作用,但是它可能与https://github.com/aws/aws-logging-dotnet/issues/52有关Amazon.Lambda.Logging.AspNetCore日志记录库。 我认为您建议的解决方案不合适。 如果您尝试使用其他日志级别创建一些日志(这应该可以工作),则会看到在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

我会尽快解决。

我刚刚发布了Amazon.Lambda.AspNetCoreServer 3.0.2版本,该版本修复了无法从配置读取日志的错误。

我确认这可以解决问题。 谢谢你们!

此页面是否有帮助?
0 / 5 - 0 等级