AWS lambda CLI调用不会返回除标准消息之外的日志消息

时间:2018-02-25 23:13:44

标签: aws-lambda amazon-cloudwatch

在一个简单的'#hello world"例如,我写信给" console"几条消息,如:

Console.WriteLine("Function name: " + context.FunctionName);
Console.WriteLine("RemainingTime: " + context.RemainingTime);

当我从CLI调用我的函数时(使用dotnet lambda invoke-functionInvoke-LMFunction),这些控制台日志消息会出现在CloudWatch中,以及"标准"记录事件(START,END,REPORT)。

enter image description here

但是在响应的LogResult属性中,我没有得到我的日志消息,只有这3个标准消息:

Log Tail:
START RequestId: c21e8947-1a7f-11e8-a331-5b75eed3283e Version: $LATEST
END RequestId: c21e8947-1a7f-11e8-a331-5b75eed3283e
REPORT RequestId: c21e8947-1a7f-11e8-a331-5b75eed3283e  Duration: 1117.28 ms    Billed Duration: 1200 ms        Memory Size: 256 MB   Max Memory Used: 25 MB

似乎返回的响应不包括日志消息,除了AWS生成的这3个标准消息。为什么会这样?文档says nothing about this

  

如果以编程方式调用Lambda函数,则可以添加LogType参数以检索写入CloudWatch Logs的最后4 KB日志数据。有关更多信息,请参阅调用。 AWS Lambda在响应中的x-amz-log-results标头中返回此日志信息。如果使用AWS命令行界面调用该函数,则可以使用值Tail指定--log-type参数。

更新 似乎另外两种编写日志的方法 - LambdaLogger.Logcontext.Logger.Log/LogLine会导致日志消息显示在Tail中。所以它只会Console.Write/WriteLine吞下它们。如果有人知道为什么 - 我认为这将是这个问题的答案。否则,它不是阻止程序,我们还有其他2种方法可供使用。但了解其中的差异会很棒。

0 个答案:

没有答案