Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@5app/logger

Package Overview
Dependencies
Maintainers
5
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@5app/logger

Simple logger used in 5app microservices

  • 2.2.0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
560
increased by4.28%
Maintainers
5
Weekly downloads
 
Created
Source

logger

Simple console logger that outputs json in prod and pretty messages on dev

Usage

npm install --save @5app/logger
const logger = require('@5app/logger');

logger.info('An email was sent', {
  email: 'customer@5app.com',
  template: 'template1',
});

logger.error(new Error('Unknown playlist 123'));

Options

The logger can optionally be customised using the following environment variables:

  • LOGS_FORMAT: if set to json, the logger will log messages in json format instead of pretty messages (default behaviour).
  • LOGS_LEVEL: minimum logging level, by default it will be debug. Accepted values are 'debug', 'info', 'warn', and 'error'
  • TAG: release tag (e.g. docker image tag) to be added to the log messages

Logging levels

Logging levels are (from lower to higher priority): 'debug', 'info', 'warn', and 'error'. The logger provides the logging functions with the following signatures: logger.<level>(message, objectOrError)

Here is an example of how the logger can be used:

logger.error('An error happened', new ApiError('The api call failed', 404)); // will log the message, the error message, the stack trace, and the statusCode error property
logger.warn('Be warned', {a: 1, b: Date.now(), c: 'some string'});
logger.info('An event happened', {a: 1, b: Date.now(), c: 'some string'});
logger.debug('A minor operation', {a: 1, b: Date.now(), c: 'some string'});

Fetching context dynamically

In addition to providing a context object, you can also use logger.addContext to provide a function which will be called on every log to get a context object.

This can be helpful if you are using async_hooks or cls-hooked to store request metadata similarly to thread-local storage.

For instance, you can do the following without having to explicitly pass the correlationId to each log:

const asyncLocalStorage = new AsyncLocalStorage();

expressApp.use((req, res, next) {
  const correlationId = req.get('X-Correlation-Id') || uuidV4();
  asyncLocalStorage.run({correlationId}, () => next());
});

logger.addContext(() => asyncLocalStorage.getStore());
logger.info('User profile updated', {userId: 1234});

And the output will look like:

{"level":"info","timestamp":"2021-02-23T17:55:43.011Z","correlationId":"12bf5b37-e0b8-56e0-8dcf-dc8c4aefc123","userId":1234}

Keywords

FAQs

Package last updated on 23 Feb 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc