Skip to content

transcovo/chpr-logger

Repository files navigation

Logger for NodeJS

This utility library implements our standard Bunyan + Sentry configuration

Requirements

Minimum Node.js version: 4

Installation

npm install --save chpr-logger

Configuration

Key Required Description
LOGGER_NAME yes Sets the name of the logger.
LOGGER_LEVEL yes Set the minimum level of logs.
SENTRY_DSN no Sets the Sentry stream. (bunyan-sentry-stream)
SENTRY_ENVIRONMENT no Sets the Sentry Environment.
USE_BUNYAN_PRETTY_STREAM no Outputs the logs on stdout with the pretty formatting from Bunyan. Must be set to true to be active. (bunyan-prettystream)
LOGGER_USE_SENSITIVE_DATA_STREAM no Use the sensitive data stream to remove any possible sensitive data from the logs (enabled by default, false to use the process.stdout stream).
LOGGER_SENSITIVE_DATA_PATTERN no Pattern fragments to match sensitive keys (default is `(mdp

Use

'use strict';

const logger = require('chpr-logger');

/* The signature is logger[level](context, message) where:
- context is an object containing all info to be logged
- context may be passed an `err` property that is an error and will be used by
  sentry to regroup errors and capture proper stacktraces
- message is just a string explaining what the log is

As in bunyan, context is optional and logger[level](message) can also work.
*/

// Log a fatal error message:
logger.fatal({ err: new Error('Fatal'), field: 'additional info' }, 'fatal message');

// Log an error message:
logger.error({ err: new Error('Error'), anotherField: 'extra context' }, 'error message');

// Log a warning message:
logger.warn({ err: new Error('Warn'), userId:'1e7b8d', age: 17 }, 'User is under 18');

// Log an informational message:
logger.info({ field: 1 }, 'info message');

// Log a debug message:
logger.debug({ user }, 'debug message');

// Log a trace message:
logger.trace({ fields: [1, 2, 66]] }, 'trace message');

Sensitive Data

chpr-logger can filter sensitive data based on specific keys and replace the values by __SENSITIVE_DATA__ string. This feature is enabled by default but you can skip this (not recommanded) by setting the environment variable LOGGER_USE_SENSITIVE_DATA_STREAM to false.

In addition, you can update the pattern on which to make the match with the environment variable LOGGER_SENSITIVE_DATA_PATTERN. Its value must represent a valid capturing regular expression.