重现步骤:
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" };
}
我可以在这里看到2种可能的解决方案:
a)将appsetings.json修改为Logging部分而不是Lambda.Logging
b)修改此文件aws-lambda-dotnet / blob / master / Libraries / src / Amazon.Lambda.AspNetCoreServer / AbstractAspNetCoreFunction.cs第179行,使其不包括“记录”部分
我现在将开始着手对此进行再现。 您看到的异常/问题是什么?
我期望调试日志(控制台应用程序和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版本,该版本修复了无法从配置读取日志的错误。
我确认这可以解决问题。 谢谢你们!