AWS Lambda
开发人员指南

日志记录 (C#)

您的 Lambda 函数可包含记录语句,而 AWS Lambda 会将这些日志写入 CloudWatch Logs。

在 C# 编程模型中,有三种在函数中记录数据的方法:

  • 使用 C# Console 类提供的静态的 WriteWriteLine 方法。CloudWatch Logs 将记录使用 Console.Write 或类似方法写入标准输出或标准错误的所有信息。

    public class ProductService { public async Task<Product> DescribeProduct(DescribeProductRequest request) { Console.WriteLine("DescribeProduct invoked with Id " + request.Id); return await catalogService.DescribeProduct(request.Id); } }
  • 使用 Amazon.Lambda.Core.LambdaLogger 类的 Log 方法。这是可在应用程序内任意位置使用的静态类。要使用该类,您必须纳入 Amazon.Lambda.Core 库。

    using Amazon.Lambda.Core; public class ProductService { public async Task<Product> DescribeProduct(DescribeProductRequest request) { LambdaLogger.Log("DescribeProduct invoked with Id " + request.Id); return await catalogService.DescribeProduct(request.Id); } }

    每次调用 LambdaLogger.Log 都会得到一个 CloudWatch Logs 事件,假设事件大小在允许的限制内。有关 CloudWatch Logs 限制的信息,请参阅 Amazon CloudWatch 用户指南 中的 CloudWatch 日志限制

  • 使用 ILambdaContext 中的记录器。您的方法中的 ILambdaContext 对象(如已指定)包含一个表示 LambdaLogger 的 Logger 属性。下面是如何使用此方法的示例:

    public class ProductService { public async Task<Product> DescribeProduct(DescribeProductRequest request, ILambdaContext context) { context.Logger.Log("DescribeProduct invoked with Id " + request.Id); return await catalogService.DescribeProduct(request.Id); } }

如何查找日志

可以通过以下方式找到您的 Lambda 函数写入的日志:

  • 在 CloudWatch Logs 中查找日志。ILambdaContext 对象提供 LogStreamNameLogGroupName 属性。借助这些属性,您可以找到写入日志的特定日志流。

  • 如果通过控制台调用 Lambda 函数,则调用类型始终为 RequestResponse(即同步执行),控制台将显示 Lambda 函数使用 LambdaLogger 对象写入的日志。AWS Lambda 还返回来自 Console.WriteConsole.WriteLine 方法的日志。

  • 通过编程方法调用 Lambda 函数时,可以添加 LogType 参数以检索写入到 CloudWatch Logs 的最后 4 KB 日志数据。有关更多信息,请参阅 Invoke。AWS Lambda 在响应的 x-amz-log-results 头中返回该日志信息。使用 AWS Command Line Interface 调用函数时,可以为 --log-type 参数指定值 Tail

本页内容: