3v324v23's picture
Add PNG files and track with Git LFS
befd7da
# Logger for NodeJS
This utility library implements our standard Bunyan + Sentry configuration
<!-- TOC depthFrom:2 -->
- [Requirements](#requirements)
- [Installation](#installation)
- [Configuration](#configuration)
- [Use](#use)
- [Sensitive Data](#sensitive-data)
<!-- /TOC -->
## Requirements
Minimum Node.js version: 4
## Installation
```bash
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](https://www.npmjs.com/package/bunyan-sentry-stream)) |
| `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](https://www.npmjs.com/package/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|password|authorization|token|pwd|auth)`). |
## Use
```javascript
'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](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/RegExp#group_back).