Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@tiqqe/lambda-logger

TIQQE118ISC1.1.1TypeScript support: included

Logger for AWS Lambda nodejs.

readme

CI

A nodejs logger for AWS Lambda

  • Writes logs to stdout/stderr using console.debug|info|warn|error
  • Logs in JSON format (supports both pretty-printed and compact formats)
  • Supports log levels: DEBUG, INFO, WARN, ERROR and OFF
  • Defaults to log level INFO
  • Built using typescript and includes types

Basic example:

import { APIGatewayEvent } from 'aws-lambda';
import { log, LogLevels } from '@tiqqe/lambda-logger';

export const healthCheck = async (event: APIGatewayEvent) => {
  // A standard INFO log message
  log.info('My message');
};
  // Output
  {
    "timestamp": "2020-03-26T14:36:07.345Z",
    "logLevel": "INFO",
    "message": "My message"
  }

Log Levels

The default log level is INFO log.level = LogLevels.INFO;.
To show debug messages you need to explicitly set the log.level to DEBUG like this:

// Set loglevel
log.logLevel = LogLevels.DEBUG;
// Write debug log
log.debug('Debugging stuff');
{
  "timestamp": "2020-03-26T14:36:07.345Z",
  "logLevel": "DEBUG",
  "message": "Debugging stuff"
}

Logging extra data

You can add any number of extra properties to the object when logging, like this:

// Write info log
log.info({ message: 'Message', myProp: 'hello', myNestedProp: { subProp: 'something' } });
{
  "timestamp": "2020-03-26T14:36:07.345Z",
  "logLevel": "INFO",
  "message": "Message",
  "myProp": "hello",
  "myNestedProp": {
    "subProp": "something"
  }
}

Mute all logs:

log.level = LogLevels.OFF;

Set log level with environment variable

You can easily set the initial log level by setting the environment variable LOG_LEVEL. This can be useful for setting different log levels in different environments TEST|PROD etc. Use 'OFF', 'DEBUG', 'INFO', 'WARN' or 'ERROR', like this:

LOG_LEVEL: 'DEBUG'

Compact JSON output

By default, logs are pretty-printed for better readability. You can enable compact single-line output by setting the compactPrint option:

// Enable compact printing
log.init({ compactPrint: true });

log.info('My message');
// Output: {"timestamp":"2024-02-13T14:36:07.345Z","logLevel":"INFO","message":"My message"}

// Default pretty printing
log.init({ compactPrint: false });

log.info('My message');
// Output:
// {
//   "timestamp": "2024-02-13T14:36:07.345Z",
//   "logLevel": "INFO",
//   "message": "My message"
// }

Serialize BigInt

By default JSON.stringify will raise a TypeError if an object contains values of the type BigInt. By setting the supportBigIntoption to true they will be serialized to a string + "n". Example BigInt(123) -> "123n".

`typescript // Enable support for BigInt log.init({ supportBigInt: true });

log.info({message: "BigInt supported", bigIntValue: 123n}); // Output: // { // "timestamp": "2025-02-17T14:36:07.345Z", // "logLevel": "INFO", // "Message": "BigInt supported" // "bigIntValue": "123n" // }

Release process

Bump the version in package.json according to semver. If we are making a non-breaking change, compared to the last version, the new version would go from 0.11.0 to 0.12.0.

changelog

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[1.1.1] - 2025-05-28

Fixed

  • Fixed an issue where init() would set LogLevel to INFO instead of its initial value.

[1.1.0] - 2024-02-28

Added

  • Support for serializing BigInt via the option supportBigInt

[1.0.0] - 2024-02-13

Breaking Changes

  • init() now resets all options to defaults unless explicitly set
    • Previously would maintain existing values for unspecified options
    • Now uses nullish coalescing to reset to defaults

Added

  • Added @default tags to document default values in types
  • Improved documentation clarity around initialization behavior

[0.1.0] - 2024-02-13

Added

  • Added compact JSON output option via compactPrint

[0.0.3] - 2024-02-04

  • Fixed non-standard output dir in build.

[0.0.2] - 2019

  • Second release

[0.0.1] - 2019

  • Initial release