File size: 3,720 Bytes
befd7da
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# 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).