Skip to content

stoft/tq-lambda-logger

 
 

Repository files navigation

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"
// }

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.

About

For logging in lambda functions using nodejs.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 96.4%
  • JavaScript 3.6%