@aws-lambda-powertools/logger
Version:
The logging package for the Powertools for AWS Lambda (TypeScript) library
242 lines • 7.45 kB
TypeScript
import type { Context } from 'aws-lambda';
import type { LogLevel } from './Logger.js';
/**
* Type that extends an autocompletable string by allowing any string value.
*
* For example, if we have a type `type MyString = 'foo' | 'bar';`, when using
* `MyString` in a function, the autocomplete will only show `foo` and `bar`.
*
* For many cases, this is fine, but sometimes we also want to allow any _other_
* string value, so we can use `AutocompletableString` instead and extend it like
* this: `type MyString = 'foo' | 'bar' | AutocompletableString;`.
*/
type AutocompletableString = string & {};
/**
* Generic log attribute object used as a base.
*/
type LogAttributes = {
[key: string]: unknown;
};
/**
* Log attribute object with a message key.
*
* This is the most common log attribute object and it's used as first argument in the logger methods.
*/
type LogAttributesWithMessage = LogAttributes & {
/**
* Your log message.
*/
message: string;
/**
* This key is generated by the logger and cannot be set manually.
*/
level?: never;
/**
* This key is generated by the logger and cannot be set manually.
*/
sampling_rate?: never;
/**
* This key is generated by the logger and cannot be set manually.
*/
service?: never;
/**
* This key is generated by the logger and cannot be set manually.
*/
timestamp?: never;
};
/**
* The environment in which the Lambda function is invoked.
*/
type Environment = 'dev' | 'local' | 'staging' | 'prod' | AutocompletableString;
/**
* Standard keys that are included in every log item when using the default log formatter.
*
* See {@link https://docs.powertools.aws.dev/lambda/python/latest/core/logger/#standard-structured-keys | Standard structured keys} for more information.
*/
type PowertoolsStandardKeys = {
/**
* Log level threshold of the log item
*
* @example "INFO"
*/
level: LogLevel;
/**
* A descriptive, human-readable representation of the log item
*
* @example "Query performed to DynamoDB"
*/
message: string;
/**
* The percentage rate at which the log level is `DEBUG`.
*
* See {@link https://docs.powertools.aws.dev/lambda/typescript/latest/core/logger/#sampling-debug-logs | Sampling debug logs} for more information.
*
* @example 0.1
*/
sampling_rate: number;
/**
* A unique name identifier of the service this AWS Lambda function belongs to.
*
* @default "service_undefined"
*
* @example "serverlessAirline"
*/
service: string;
/**
* Timestamp string in simplified extended ISO format (ISO 8601)
*
* @example "2011-10-05T14:48:00.000Z"
*/
timestamp: string;
/**
* X-Ray Trace ID set by the Lambda runtime.
*
* @example "1-5759e988-bd862e3fe1be46a994272793"
*/
xray_trace_id: string;
/**
* An optional object containing information about the error passed to the logger
*/
error?: Error;
};
/**
* Additional keys that are added to the log item when using the default log formatter and
* having added AWS Lambda context.
*
* See {@link https://docs.powertools.aws.dev/lambda/typescript/latest/core/logger/#capturing-lambda-context-info | Capturing Lambda context info} for more information.
*/
type PowertoolsLambdaContextKeys = {
/**
* Indicates whether the current execution experienced a cold start.
*
* @example false
*/
cold_start: boolean;
/**
* The name of the Lambda function.
*
* @example "example-powertools-HelloWorldFunction-1P1Z6B39FLU73"
*/
function_name: string;
/**
* The memory size of the Lambda function.
*
* @example "128"
*/
function_memory_size: string;
/**
* The ARN of the Lambda function.
*
* @example "arn:aws:lambda:eu-west-1:012345678910:function:example-powertools-HelloWorldFunction-1P1Z6B39FLU73"
*/
function_arn: string;
/**
* The request ID of the current invocation.
*
* @example "899856cb-83d1-40d7-8611-9e78f15f32f4"
*/
function_request_id: string;
};
/**
* Keys available to the logger when customers have captured AWS Lambda context information.
*
* This object is a subset of the `Context` object from the `aws-lambda` package and is used
* only internally by the logger and passed to the log formatter.
*
* For the public API used in the default log formatter, see {@link PowertoolsLambdaContextKeys}.
*
* @internal
*/
type LambdaFunctionContext = Pick<Context, 'functionName' | 'memoryLimitInMB' | 'functionVersion' | 'invokedFunctionArn' | 'awsRequestId'> & {
coldStart: boolean;
};
/**
* Keys managed by the Powertools for AWS Lambda Logger.
*
* This type is used internally by the logger and passed to the log formatter.
*
* For the public API used in the log formatter, see {@link PowertoolsStandardKeys} and {@link PowertoolsLambdaContextKeys}.
*/
type PowertoolsLogData = {
/**
* The environment in which the Lambda function is invoked.
*/
environment?: Environment;
/**
* The name of the service this AWS Lambda function belongs to.
*/
serviceName: string;
/**
* The percentage rate at which the log level is `DEBUG`.
*/
sampleRateValue: number;
/**
* Lambda context information.
*
* See {@link LambdaFunctionContext} for more information.
*/
lambdaContext?: LambdaFunctionContext;
/**
* The X-Ray Trace ID set by the Lambda runtime.
*/
xRayTraceId?: string;
/**
* The AWS region in which the Lambda function is invoked.
*/
awsRegion: string;
};
/**
* Base log attributes that are included in every log item.
*/
type BaseLogAttributes = {
/**
* An optional object containing information about the error passed to the logger.
*/
error?: Error;
/**
* Log level threshold of the log item.
*/
logLevel: LogLevel;
/**
* Timestamp string in simplified extended ISO format (ISO 8601).
*/
timestamp: Date;
/**
* A descriptive, human-readable representation of the log item.
*/
message: string;
};
/**
* Unformatted attributes that are passed to the log formatter.
*/
type UnformattedAttributes = LogAttributes & PowertoolsLogData & BaseLogAttributes;
/**
* Keys that can be used to order log attributes by.
*/
type LogKey = keyof PowertoolsStandardKeys | keyof PowertoolsLambdaContextKeys | AutocompletableString;
type LogKeys = {
[key: string]: unknown;
} & {
/**
* This key is passed when emitting a log message and cannot be set manually.
*/
message?: never;
/**
* This key is generated by the logger and cannot be added to the logger.
*/
level?: never;
/**
* This key is generated by the logger and cannot be added to the logger.
*/
sampling_rate?: never;
/**
* This key is generated by the logger and cannot be added to the logger.
*/
service?: never;
/**
* This key is generated by the logger and cannot be added to the logger.
*/
timestamp?: never;
};
export type { LogKeys, LogAttributes, LogAttributesWithMessage, Environment, PowertoolsLogData, PowertoolsStandardKeys, PowertoolsLambdaContextKeys, UnformattedAttributes, LogKey, };
//# sourceMappingURL=logKeys.d.ts.map