AWS.Lambda.Powertools.Logging
1.6.2
Prefix Reserved
dotnet add package AWS.Lambda.Powertools.Logging --version 1.6.2
NuGet\Install-Package AWS.Lambda.Powertools.Logging -Version 1.6.2
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AWS.Lambda.Powertools.Logging" Version="1.6.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add AWS.Lambda.Powertools.Logging --version 1.6.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: AWS.Lambda.Powertools.Logging, 1.6.2"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install AWS.Lambda.Powertools.Logging as a Cake Addin #addin nuget:?package=AWS.Lambda.Powertools.Logging&version=1.6.2 // Install AWS.Lambda.Powertools.Logging as a Cake Tool #tool nuget:?package=AWS.Lambda.Powertools.Logging&version=1.6.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
AWS.Lambda.Powertools.Logging
The logging utility provides a AWS Lambda optimized logger with output structured as JSON.
Key features
- Capture key fields from Lambda context, cold start and structures logging output as JSON
- Log Lambda event when instructed (disabled by default)
- Log sampling enables DEBUG log level for a percentage of requests (disabled by default)
- Append additional keys to structured log at any point in time
Read the docs
For a full list of features go to docs.powertools.aws.dev/lambda/dotnet/core/logging/
GitHub: https://github.com/aws-powertools/powertools-lambda-dotnet/
Sample Function
public class Function
{
[Logging(LogEvent = true)]
public async Task<APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest apigwProxyEvent,
ILambdaContext context)
{
var requestContextRequestId = apigwProxyEvent.RequestContext.RequestId;
var lookupInfo = new Dictionary<string, object>()
{
{"LookupInfo", new Dictionary<string, object>{{ "LookupId", requestContextRequestId }}}
};
// Appended keys are added to all subsequent log entries in the current execution.
// Call this method as early as possible in the Lambda handler.
// Typically this is value would be passed into the function via the event.
// Set the ClearState = true to force the removal of keys across invocations,
Logger.AppendKeys(lookupInfo);
Logger.LogInformation("Getting ip address from external service");
var location = await GetCallingIp();
var lookupRecord = new LookupRecord(lookupId: requestContextRequestId,
greeting: "Hello Powertools for AWS Lambda (.NET)", ipAddress: location);
try
{
await SaveRecordInDynamo(lookupRecord);
return new APIGatewayProxyResponse
{
Body = JsonSerializer.Serialize(lookupRecord),
StatusCode = 200,
Headers = new Dictionary<string, string> { { "Content-Type", "application/json" } }
};
}
catch (Exception e)
{
Logger.LogError(e.Message);
return new APIGatewayProxyResponse
{
Body = e.Message,
StatusCode = 500,
Headers = new Dictionary<string, string> { { "Content-Type", "application/json" } }
};
}
}
}
Sample output
{
"cold_start": false,
"xray_trace_id": "1-623d34cb-00c3698b02f11dc713442693",
"lookup": {
"lookup_id": "7d2ce9bb-c7d1-4304-9912-6078d276604f"
},
"function_name": "PowertoolsLoggingSample-HelloWorldFunction-hm1r10VT3lCy",
"function_version": "$LATEST",
"function_memory_size": 256,
"function_arn": "arn:aws:lambda:ap-southeast-2:111111111111:function:PowertoolsLoggingSample-HelloWorldFunction-hm1r10VT3lCy",
"function_request_id": "f5c3bae7-0e18-495a-9959-ef101c7afbc0",
"timestamp": "2022-03-25T03:19:39.9322301Z",
"level": "Information",
"service": "powertools-dotnet-logging-sample",
"name": "AWS.Lambda.Powertools.Logging.Logger",
"message": "Getting ip address from external service"
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net6.0
- Amazon.Lambda.Core (>= 2.2.0)
- Amazon.Lambda.Serialization.SystemTextJson (>= 2.4.3)
- AspectInjector (>= 2.8.1)
- Microsoft.Extensions.Logging (>= 8.0.0)
-
net8.0
- Amazon.Lambda.Core (>= 2.2.0)
- Amazon.Lambda.Serialization.SystemTextJson (>= 2.4.3)
- AspectInjector (>= 2.8.1)
- Microsoft.Extensions.Logging (>= 8.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on AWS.Lambda.Powertools.Logging:
Package | Downloads |
---|---|
Lambifast
Package Description |
GitHub repositories (4)
Showing the top 4 popular GitHub repositories that depend on AWS.Lambda.Powertools.Logging:
Repository | Stars |
---|---|
aws/aws-lambda-dotnet
Libraries, samples and tools to help .NET Core developers develop AWS Lambda functions.
|
|
aws-samples/serverless-test-samples
This repository is designed to provide guidance for implementing comprehensive test suites for serverless applications.
|
|
aws-powertools/powertools-lambda-dotnet
Powertools is a developer toolkit to implement Serverless best practices and increase developer velocity.
|
|
aws-samples/serverless-dotnet-demo
|
Version | Downloads | Last updated |
---|---|---|
1.6.2 | 15,563 | 10/22/2024 |
1.6.2-alpha2 | 81 | 10/9/2024 |
1.6.2-alpha | 71 | 10/9/2024 |
1.6.1 | 16,750 | 10/2/2024 |
1.6.0 | 4,877 | 9/24/2024 |
1.6.0-alpha | 25,373 | 2/21/2024 |
1.5.1 | 153,077 | 3/10/2024 |
1.4.4 | 117,689 | 11/16/2023 |
1.3.3 | 13,773 | 10/30/2023 |
1.3.2 | 27,195 | 9/19/2023 |
1.2.0 | 12,840 | 8/22/2023 |
1.1.1 | 28,543 | 6/21/2023 |
1.1.0 | 29,403 | 5/5/2023 |
1.0.1 | 32,457 | 4/6/2023 |
1.0.0 | 9,260 | 2/24/2023 |
0.0.2-preview | 1,929 | 1/18/2023 |
0.0.1-preview.1 | 5,378 | 8/1/2022 |